From 61c467193ca1e9120ed882c5d216e1563b4cf35e Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Fri, 2 Oct 2026 12:35:53 +0200 Subject: [PATCH 1/7] feat: check data items against periods and org units from metadata --- package.json | 1 + src/__demo__/DataItemProfile.reference.js | 353 + src/__demo__/DataItemProfile.shared.js | 164 + src/__demo__/DataItemProfile.stories.js | 258 + .../DataItemProfileTypicalUse.stories.js | 412 + src/__fixtures__/dataItemProfileMetadata.js | 3 + .../aggregation-by-period-type.json | 13421 ++++++++++++++++ .../period-types/carry-windows.json | 6427 ++++++++ .../period-types/detection-requests.json | 956 ++ .../indicators-and-expressions.json | 3427 ++++ .../period-types/metadata-shapes.json | 1703 ++ .../period-types/mixed-collection.json | 1739 ++ .../period-types/periods-that-dont-nest.json | 1363 ++ .../period-types/reporting-rates.json | 1236 ++ src/api/__tests__/dataItemProfile.spec.js | 378 + src/api/__tests__/orgUnitCoverage.spec.js | 293 + src/api/dataItemProfile.js | 300 + src/api/orgUnitCoverage.js | 266 + src/api/orgUnitGroupCounts.js | 114 + src/api/orgUnitQueries.js | 20 + .../DataItemProfile/__tests__/hooks.spec.js | 408 + .../DataItemProfile/useDataItemProfiles.js | 202 + src/components/DataItemProfile/utils.js | 55 + src/index.js | 49 + .../__tests__/carriedValues.spec.js | 158 + .../__tests__/expressionItems.spec.js | 69 + .../__tests__/fixtures.spec.js | 434 + .../getDataItemOrgUnitCompatibility.spec.js | 473 + .../__tests__/getDataItemProfile.spec.js | 473 + .../getDataItemProfileCompatibility.spec.js | 526 + .../__tests__/orgUnitSelection.spec.js | 160 + .../__tests__/orgUnitSide.spec.js | 73 + .../__tests__/periodTypeRelations.spec.js | 198 + .../__tests__/periodTypes.spec.js | 155 + src/modules/dataItemProfile/carriedValues.js | 153 + .../dataItemProfile/compatibilityStatuses.js | 31 + .../dataItemProfile/expressionItems.js | 80 + .../getDataItemOrgUnitCompatibility.js | 320 + .../dataItemProfile/getDataItemProfile.js | 375 + .../getDataItemProfileCompatibility.js | 398 + .../dataItemProfile/orgUnitSelection.js | 160 + src/modules/dataItemProfile/orgUnitSide.js | 48 + .../dataItemProfile/periodTypeRelations.js | 192 + src/modules/dataItemProfile/periodTypes.js | 164 + src/modules/dataItemProfile/sources.js | 31 + 45 files changed, 38219 insertions(+) create mode 100644 src/__demo__/DataItemProfile.reference.js create mode 100644 src/__demo__/DataItemProfile.shared.js create mode 100644 src/__demo__/DataItemProfile.stories.js create mode 100644 src/__demo__/DataItemProfileTypicalUse.stories.js create mode 100644 src/__fixtures__/dataItemProfileMetadata.js create mode 100644 src/__fixtures__/period-types/aggregation-by-period-type.json create mode 100644 src/__fixtures__/period-types/carry-windows.json create mode 100644 src/__fixtures__/period-types/detection-requests.json create mode 100644 src/__fixtures__/period-types/indicators-and-expressions.json create mode 100644 src/__fixtures__/period-types/metadata-shapes.json create mode 100644 src/__fixtures__/period-types/mixed-collection.json create mode 100644 src/__fixtures__/period-types/periods-that-dont-nest.json create mode 100644 src/__fixtures__/period-types/reporting-rates.json create mode 100644 src/api/__tests__/dataItemProfile.spec.js create mode 100644 src/api/__tests__/orgUnitCoverage.spec.js create mode 100644 src/api/dataItemProfile.js create mode 100644 src/api/orgUnitCoverage.js create mode 100644 src/api/orgUnitGroupCounts.js create mode 100644 src/api/orgUnitQueries.js create mode 100644 src/components/DataItemProfile/__tests__/hooks.spec.js create mode 100644 src/components/DataItemProfile/useDataItemProfiles.js create mode 100644 src/components/DataItemProfile/utils.js create mode 100644 src/modules/dataItemProfile/__tests__/carriedValues.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/expressionItems.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/fixtures.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js create mode 100644 src/modules/dataItemProfile/__tests__/periodTypes.spec.js create mode 100644 src/modules/dataItemProfile/carriedValues.js create mode 100644 src/modules/dataItemProfile/compatibilityStatuses.js create mode 100644 src/modules/dataItemProfile/expressionItems.js create mode 100644 src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js create mode 100644 src/modules/dataItemProfile/getDataItemProfile.js create mode 100644 src/modules/dataItemProfile/getDataItemProfileCompatibility.js create mode 100644 src/modules/dataItemProfile/orgUnitSelection.js create mode 100644 src/modules/dataItemProfile/orgUnitSide.js create mode 100644 src/modules/dataItemProfile/periodTypeRelations.js create mode 100644 src/modules/dataItemProfile/periodTypes.js create mode 100644 src/modules/dataItemProfile/sources.js diff --git a/package.json b/package.json index 894f4fdd2..9b6e2edee 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "src", "!src/**/__snapshots__/**", "!src/**/__demo__/data/**", + "!src/__fixtures__/period-types/**", "docs", "CHANGELOG.md" ], diff --git a/src/__demo__/DataItemProfile.reference.js b/src/__demo__/DataItemProfile.reference.js new file mode 100644 index 000000000..43217b3ec --- /dev/null +++ b/src/__demo__/DataItemProfile.reference.js @@ -0,0 +1,353 @@ +import PropTypes from 'prop-types' +import React from 'react' + +export const STATUS_DEFINITIONS = [ + [ + 'full', + 'Fully compatible with all the item’s data sets and programs that collect for the selection: every value collected comes back (also averaged, carried, or where only some units collect it).', + 'Data element captured monthly, with aggregation enabled, requested quarterly', + 'Indicator with all its components captured at facility level, with aggregation enabled, requested at district level', + ], + [ + 'partial', + 'Compatible with only some of the item’s data sets and programs that collect for the selection: the others’ values are left out. Only for an item collected in several data sets or programs that differ (mixed). For an expression, computed from such an operand (OPERAND_PARTIAL).', + 'Data element captured weekly from Monday in one data set and from Wednesday in another, requested by Monday week', + 'Data element captured at facility level in one data set and at district level in another, requested at a facility', + ], + [ + 'none', + 'Compatible with none of the item’s data sets and programs that collect for the selection: no value comes back. For an expression, an operand gives none (OPERAND_EMPTY).', + 'Data element captured monthly, requested weekly', + 'Data element captured at district level, requested at a facility', + ], + [ + 'unknown', + 'Can’t tell: see the reasons.', + 'Relative weeks when the weekly start setting is missing', + 'An org unit group, or an event data item without its program in its id', + ], +] + +export const REASON_DEFINITIONS = [ + [ + 'OPERAND_EMPTY', + 'An expression whose operand gives no value has none: a ratio without its denominator.', + 'none', + 'ANC 1 Coverage by week: ANC 1st visit is monthly', + ], + [ + 'OPERAND_PARTIAL', + 'An expression computed from an operand that leaves values out: it can be off either way.', + 'partial', + 'An indicator over IDSR Measles by Monday week', + ], + [ + 'AVERAGED', + 'Repeated from the data period that holds it.', + 'full, partial', + 'Total Population (yearly) by month', + ], + [ + 'CARRIED', + 'From another data period (FIRST, LAST).', + 'full, partial', + 'Monthly LAST data on 15 July: June’s value', + ], + [ + 'SHORTER', + 'Period shorter than the data’s type.', + 'partial, none', + 'ANC 1st visit (monthly) by week', + ], + [ + 'OTHER_TYPE', + 'Same length, other type.', + 'partial, none', + 'IDSR Measles’ Wednesday weeks by Monday week', + ], + [ + 'REPORTING_RATE', + 'Reporting rate in a shorter period.', + 'partial, none', + 'Child Health reporting rate by week', + ], + [ + 'NOTHING_TO_CARRY', + 'FIRST or LAST with no data period that counts.', + 'partial, none', + 'Monthly LAST data on 1 January', + ], + [ + 'PROFILE_UNKNOWN', + 'Missing metadata: see the profile’s reasons.', + 'unknown', + 'An element in no data set', + ], + [ + 'UNKNOWN_PERIOD', + 'Unreadable period id.', + 'unknown', + 'A mistyped period id, like 2025X1', + ], + [ + 'SETTING_MISSING', + 'Relative period type needs a setting not given.', + 'unknown', + 'LAST_4_WEEKS on weekly data, weekly start unknown', + ], + [ + 'UNSUPPORTED_VERSION', + 'Type this server version can’t answer.', + 'unknown', + '2025NovQ1 on 2.40', + ], +] + +export const ORG_UNIT_REASON_DEFINITIONS = [ + [ + 'NOT_ASSIGNED', + 'Its data sets aren’t assigned there, though they are at that level elsewhere.', + 'none', + 'ANC 1st visit at Junctionla MCHP', + ], + [ + 'BELOW_COLLECTION', + 'Data is entered above the level asked: nothing is split down. Partial when another data set fills the place.', + 'none, partial', + 'District data by facility', + ], + [ + 'AGGREGATION_LEVEL', + 'The data element’s aggregation levels stop values entered below them from reaching the level asked. Partial when another data set fills the place.', + 'none, partial', + 'Facility data with aggregation level 2, asked by district', + ], + [ + 'PARTLY_ASSIGNED', + 'Assigned to only some of the units at the deepest level entered: the others don’t collect it, so nothing is left out.', + 'full', + 'ANC 1st visit in Sierra Leone: 1,159 of 1,166 facilities', + ], + [ + 'ORG_UNIT_FIELD', + 'A program indicator places its values by another org unit than the event’s or enrollment’s (registration, or an org unit attribute): they can be anywhere, wherever its program is assigned.', + 'full', + 'A program indicator by registration org unit', + ], + [ + 'UNKNOWN_ORG_UNIT', + 'An org unit or level that isn’t loaded or can’t be read.', + 'unknown', + 'A mistyped id', + ], + [ + 'EVENT_DATA', + 'Event data whose program can’t be told from its id.', + 'unknown', + 'An event data item named by its data element alone', + ], +] + +const ReferenceTable = ({ title, columns, rows }) => ( +
+ {title} + + + + {columns.map((column) => ( + + ))} + + + + {rows.map(([code, ...cells]) => ( + + + {cells.map((cell, i) => ( + + ))} + + ))} + +
{column}
+ {code} + {cell}
+ +
+) + +ReferenceTable.propTypes = { + columns: PropTypes.arrayOf(PropTypes.string), + rows: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + title: PropTypes.string, +} + +// The API a story shows, apart from the demo itself +const NO_REFERENCES = [] + +export const ApiPanel = ({ + basedOn, + runs, + input, + signature, + summary, + returns, + uses, + references = NO_REFERENCES, +}) => ( + +) + +ApiPanel.propTypes = { + basedOn: PropTypes.string, + input: PropTypes.string, + references: PropTypes.arrayOf( + PropTypes.shape({ + columns: PropTypes.arrayOf(PropTypes.string), + rows: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + title: PropTypes.string, + }) + ), + returns: PropTypes.string, + runs: PropTypes.string, + signature: PropTypes.string, + summary: PropTypes.string, + uses: PropTypes.string, +} + +export const DemoHeading = () => ( +

+ Demo + +

+) + +// The steps of a scenario, apart from the demo itself +export const ScenarioPanel = ({ title, steps }) => ( + +) + +ScenarioPanel.propTypes = { + steps: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + title: PropTypes.string, +} diff --git a/src/__demo__/DataItemProfile.shared.js b/src/__demo__/DataItemProfile.shared.js new file mode 100644 index 000000000..1e7cbab4b --- /dev/null +++ b/src/__demo__/DataItemProfile.shared.js @@ -0,0 +1,164 @@ +import { DataProvider } from '@dhis2/app-runtime' +import { ConfigProvider } from '@dhis2/app-service-config' +import { CircularLoader, NoticeBox, Tag } from '@dhis2/ui' +import PropTypes from 'prop-types' +import React from 'react' + +/* Log in to the server in the same browser first. It must allow requests + * from Storybook (localhost:5000): this dev server does, the play instances + * don't. */ +export const BASE_URL = 'https://dev.im.dhis2.org/analytics-dev/' + +export const Wrapper = (story) => ( + + + {story()} + + +) + +// Sierra Leone demo items, one per case +export const ITEMS = [ + { + id: 'fbfJHSPpUQD', + dimensionItemType: 'DATA_ELEMENT', + name: 'ANC 1st visit (monthly, sum)', + }, + { + id: 'fbfJHSPpUQD.pq2XI5kz2BY', + dimensionItemType: 'DATA_ELEMENT_OPERAND', + name: 'ANC 1st visit at facilities (category: Fixed)', + }, + { + id: 'WUg3MYWQ7pt', + dimensionItemType: 'DATA_ELEMENT', + name: 'Total Population (yearly, averaged)', + }, + { + id: 'YazgqXbizv1', + dimensionItemType: 'DATA_ELEMENT', + name: 'IDSR Measles (Monday and Wednesday weeks)', + }, + { + id: 'Uvn6LCg7dVU', + dimensionItemType: 'INDICATOR', + name: 'ANC 1 Coverage (indicator over the population)', + }, + { + id: 'BfMAe6Itzgt.REPORTING_RATE', + dimensionItemType: 'REPORTING_RATE', + name: 'Child Health reporting rate (monthly)', + }, + { + id: 'GSae40Fyppf', + dimensionItemType: 'PROGRAM_INDICATOR', + name: 'Age at visit (program indicator)', + }, + { + id: 'gKv1pdjF3wM', + dimensionItemType: 'INDICATOR', + name: 'Inpatient cases per 10 000 population (indicator over a program indicator)', + }, + { + id: 'eBAyeGv0exc.vV9UWAZohSf', + dimensionItemType: 'PROGRAM_DATA_ELEMENT', + name: 'Weight in kg (program data element)', + }, +] + +export const SIERRA_LEONE = 'ImspTQPwCqd' +// A district, and a facility without Reproductive Health (ANC 1st visit) +export const BO = 'O6uvpzGd5pu' +export const JUNCTIONLA_MCHP = 'QCnJDmNjQy0' + +export const splitList = (text) => + text + .split(/[,\s]+/) + .map((value) => value.trim()) + .filter(Boolean) + +const STATUS_TAG = { + full: { positive: true }, + partial: { neutral: true }, + none: { negative: true }, + unknown: {}, +} + +const NO_REASONS = [] + +export const Status = ({ status, reasons = NO_REASONS }) => ( + + {status} + {reasons.length > 0 && ( + {reasons.join(', ')} + )} + + +) + +Status.propTypes = { + reasons: PropTypes.arrayOf(PropTypes.string), + status: PropTypes.string, +} + +export const Loading = () => + +export const ErrorNotice = ({ error }) => ( + + {error.message}. Are you logged in to {BASE_URL} in this browser? + +) + +ErrorNotice.propTypes = { error: PropTypes.object } + +export const tableStyle = ( + +) diff --git a/src/__demo__/DataItemProfile.stories.js b/src/__demo__/DataItemProfile.stories.js new file mode 100644 index 000000000..255e8abe5 --- /dev/null +++ b/src/__demo__/DataItemProfile.stories.js @@ -0,0 +1,258 @@ +import { InputField } from '@dhis2/ui' +import PropTypes from 'prop-types' +import React, { useMemo, useState } from 'react' +import { useDataItemProfiles } from '../components/DataItemProfile/useDataItemProfiles.js' +import { readOrgUnitSelection } from '../modules/dataItemProfile/orgUnitSelection.js' +import { + ApiPanel, + DemoHeading, + ORG_UNIT_REASON_DEFINITIONS, + REASON_DEFINITIONS, + STATUS_DEFINITIONS, +} from './DataItemProfile.reference.js' +import { + ErrorNotice, + BO, + ITEMS, + JUNCTIONLA_MCHP, + Loading, + SIERRA_LEONE, + splitList, + Status, + tableStyle, + Wrapper, +} from './DataItemProfile.shared.js' + +export default { + title: 'DataItemProfile/Hooks', + decorators: [Wrapper], +} + +// Event data comes from programs: it is placed in any period by its dates +const isCollectedByDate = (profile) => + !profile.unknown && profile.sources.every(({ program }) => program) + +const describeCollection = ({ period, ...profile }) => { + if (period.types.length) { + return `${period.types.join(', ')}${period.mixed ? ' (mixed)' : ''}` + } + + return isCollectedByDate(profile) ? 'event dates' : 'unknown' +} + +// How many units at the deepest level entered the data sets are assigned to +const Coverage = ({ coverage }) => + coverage ? ( +
+ {coverage.assigned.toLocaleString('en')} of{' '} + {coverage.total.toLocaleString('en')} at level {coverage.level} + +
+ ) : null + +Coverage.propTypes = { coverage: PropTypes.object } + +// The levels its data sets are assigned at, deepest first +const describeLevels = ({ orgUnit }) => + orgUnit?.levels.length + ? `${orgUnit.levels.join(', ')}${orgUnit.mixed ? ' (mixed)' : ''}` + : '–' + +const describeFinest = (profile) => + profile.period.finest ?? (isCollectedByDate(profile) ? 'any' : 'unknown') + +export const ProfilesAndCompatibility = () => { + const [periodsText, setPeriodsText] = useState( + '2025W2, 202501, 2025Q1, 2025, LAST_12_MONTHS, LAST_4_WEEKS, Weekly' + ) + const periods = useMemo(() => splitList(periodsText), [periodsText]) + const [orgUnitsText, setOrgUnitsText] = useState( + `${SIERRA_LEONE}, ${BO}, ${JUNCTIONLA_MCHP}, USER_ORGUNIT_CHILDREN` + ) + const orgUnits = useMemo(() => splitList(orgUnitsText), [orgUnitsText]) + const orgUnitItems = readOrgUnitSelection(orgUnits).items.map( + ({ id }) => id + ) + const { + loading, + error, + profiles, + relativePeriodTypes, + getDataItemCompatibility, + } = useDataItemProfiles(ITEMS, { orgUnits }) + + return ( +
+ {tableStyle} + + +
+ setPeriodsText(value)} + inputWidth="600px" + /> +
+
+ setOrgUnitsText(value)} + inputWidth="600px" + /> +
+ {loading && } + {error && } + {profiles && ( + <> +

+ Relative weeks:{' '} + {relativePeriodTypes.weeklyPeriodType ?? 'unknown'}. + Relative financial years:{' '} + {relativePeriodTypes.financialYearPeriodType ?? + 'unknown'} + . +

+ + + + + + {periods.length > 0 && ( + + )} + {orgUnitItems.length > 0 && ( + + )} + + + + + + + {periods.map((period) => ( + + ))} + {orgUnitItems.map((orgUnit) => ( + + ))} + + + + {ITEMS.map(({ id, name }) => { + const profile = profiles[id] + const compatibility = getDataItemCompatibility( + id, + { periods, orgUnits } + ) + + return ( + + + + + + + {compatibility.periods.map((result) => ( + + ))} + {compatibility.orgUnits?.map( + (result) => ( + + ) + )} + + ) + })} + +
Item + Profile getDataItemProfile + + Compatibility{' '} + getDataItemCompatibility + + Org units{' '} + getDataItemCompatibility +
JSONCollected atLevelsFinest{period}{orgUnit}
+ {name} + {profile.unknown && ( +
+ code + )} + /> +
+ )} +
+
+ Show +
+                                                    {JSON.stringify(
+                                                        profile,
+                                                        null,
+                                                        2
+                                                    )}
+                                                
+
+
{describeCollection(profile)}{describeLevels(profile)}{describeFinest(profile)} + + + + +
+ + )} +
+ ) +} + +ProfilesAndCompatibility.storyName = 'Profiles and compatibility' diff --git a/src/__demo__/DataItemProfileTypicalUse.stories.js b/src/__demo__/DataItemProfileTypicalUse.stories.js new file mode 100644 index 000000000..1a28c1da0 --- /dev/null +++ b/src/__demo__/DataItemProfileTypicalUse.stories.js @@ -0,0 +1,412 @@ +import { Checkbox, InputField, NoticeBox } from '@dhis2/ui' +import PropTypes from 'prop-types' +import React, { useMemo, useState } from 'react' +import { useDataItemProfiles } from '../components/DataItemProfile/useDataItemProfiles.js' +import { ScenarioPanel } from './DataItemProfile.reference.js' +import { + ErrorNotice, + ITEMS, + Loading, + SIERRA_LEONE, + splitList, + Status, + tableStyle, + Wrapper, +} from './DataItemProfile.shared.js' + +export default { + title: 'DataItemProfile/Typical use in Data Visualizer', + decorators: [Wrapper], +} + +const STEPS = [ + [ + 'The user picks data items: DV loads their profiles, and where their data sets are assigned under the org units.', + 'useDataItemProfiles(items, { orgUnits })', + ], + [ + 'The pickers mark each period type and each org unit level for those items.', + "getDataItemCompatibility(itemId, { periods: [periodType], orgUnits: [boundary, 'LEVEL-n'] })", + ], + [ + 'Periods and org units selected, before Update: DV checks them, from current metadata only.', + 'getDataItemCompatibility(itemId, { periods, orgUnits })', + ], +] + +// The period types the picker offers in this demo, shortest first +const PICKER_PERIOD_TYPES = [ + 'Daily', + 'Weekly', + 'WeeklyWednesday', + 'BiWeekly', + 'Monthly', + 'Quarterly', + 'SixMonthly', + 'Yearly', + 'FinancialApril', +] + +// The types of the data sets that can't fill the period: compatible with none +const getTypesLeftOut = ({ sources }, profile) => [ + ...new Set( + sources + .map(({ status }, i) => + status === 'none' + ? profile.sources[i].dataSet?.periodType + : null + ) + .filter(Boolean) + ), +] + +// What DV could say about an item, for one period +const adviceFor = (result, profile) => { + const { status, reasons } = result + const typesLeftOut = getTypesLeftOut(result, profile).join(' and ') + + switch (status) { + case 'full': + if (reasons.includes('CARRIED')) { + return 'Shown, from an earlier data period.' + } + return reasons.includes('AVERAGED') + ? 'Shown, repeated from the data period that holds it.' + : 'Shown.' + case 'partial': + return reasons.includes('OPERAND_PARTIAL') + ? 'Shown, but computed from incomplete data: it can be off either way.' + : `Partly shown: the ${typesLeftOut} data can’t fill this period.` + case 'none': + if (reasons.includes('REPORTING_RATE')) { + return 'Not shown: a reporting rate can’t be shown by this period.' + } + if (reasons.includes('NOTHING_TO_CARRY')) { + return 'Not shown: no earlier value in these years.' + } + return `Not shown: collected ${typesLeftOut}.` + default: + return 'Can’t tell.' + } +} + +const PeriodTypeMarks = ({ items, getDataItemCompatibility }) => ( + + + + + {items.map(({ id, name }) => ( + + ))} + + + + {PICKER_PERIOD_TYPES.map((periodType) => ( + + + {items.map(({ id }) => ( + + ))} + + ))} + +
Period type{name}
{periodType} + +
+) + +const formatCount = (count) => count.toLocaleString('en') + +// What DV could say about an item, for one org unit selection item +const orgUnitAdviceFor = ({ status, reasons, coverage }, levels) => { + const levelName = + coverage && levels.find(({ level }) => level === coverage.level)?.name + const counted = + coverage && + `${formatCount(coverage.assigned)} of ${formatCount( + coverage.total + )} units at level ${levelName ?? coverage.level}` + + switch (status) { + case 'full': + return reasons.includes('PARTLY_ASSIGNED') + ? `Shown: assigned to ${counted}; the others don’t collect it.` + : `Shown: assigned to ${counted}.` + case 'partial': + return reasons.includes('OPERAND_PARTIAL') + ? 'Shown, but computed from incomplete data: it can be off either way.' + : 'Partly shown: data entered at a higher level is left out.' + case 'none': + return reasons.includes('BELOW_COLLECTION') + ? 'Not shown: entered at a higher level.' + : 'Not shown: its data sets aren’t assigned here.' + default: + return reasons.includes('EVENT_DATA') + ? 'Can’t tell for event data yet.' + : 'Can’t tell.' + } +} + +const OrgUnitLevelMarks = ({ items, levels, getDataItemCompatibility }) => ( + + + + + {items.map(({ id, name }) => ( + + ))} + + + + {levels.map(({ level, name }) => ( + + + {items.map(({ id }) => ( + + ))} + + ))} + +
Level{name}
{name} + +
+) + +OrgUnitLevelMarks.propTypes = { + getDataItemCompatibility: PropTypes.func, + items: PropTypes.array, + levels: PropTypes.array, +} + +PeriodTypeMarks.propTypes = { + getDataItemCompatibility: PropTypes.func, + items: PropTypes.array, +} + +// One column per dimension +const Columns = ({ period, orgUnit }) => ( +
+
+

Period

+ {period} +
+
+

Org unit

+ {orgUnit ??

Coming soon.

} +
+ +
+) + +Columns.propTypes = { orgUnit: PropTypes.node, period: PropTypes.node } + +export const TypicalUse = () => { + const [selectedIds, setSelectedIds] = useState([ + 'fbfJHSPpUQD', + 'Uvn6LCg7dVU', + 'YazgqXbizv1', + ]) + const [periodsText, setPeriodsText] = useState('2025W2') + const [orgUnitsText, setOrgUnitsText] = useState(SIERRA_LEONE) + const items = useMemo( + () => ITEMS.filter(({ id }) => selectedIds.includes(id)), + [selectedIds] + ) + const periods = useMemo(() => splitList(periodsText), [periodsText]) + const orgUnits = useMemo(() => splitList(orgUnitsText), [orgUnitsText]) + // The country, for the levels in the picker, and the units selected + const loadedOrgUnits = useMemo( + () => [...new Set([SIERRA_LEONE, ...orgUnits])], + [orgUnits] + ) + const { + loading, + error, + profiles, + orgUnitCoverage, + getDataItemCompatibility, + } = useDataItemProfiles(items, { orgUnits: loadedOrgUnits }) + + const toggle = (id) => + setSelectedIds((ids) => + ids.includes(id) + ? ids.filter((other) => other !== id) + : [...ids, id] + ) + return ( +
+ {tableStyle} + + +

Data items

+ {ITEMS.map(({ id, name }) => ( + toggle(id)} + /> + ))} + {loading && } + {error && } + + {profiles && items.length > 0 && ( + <> +

Pickers

+ + } + orgUnit={ + orgUnitCoverage ? ( + + ) : ( + + ) + } + /> + +

Selected, before Update

+ +
+ + setPeriodsText(value) + } + /> +
+ + Past data may have been collected with a + different configuration. + + + + {items.map(({ id, name }) => ( + + + + + ))} + +
{name} + {getDataItemCompatibility( + id, + { periods } + )?.periods.map((result) => ( +
+ + {result.id} + {' '} + {' '} + {adviceFor( + result, + profiles[id] + )}{' '} +
+ ))} +
+ + } + orgUnit={ + <> +
+ + setOrgUnitsText(value) + } + /> +
+ + + {items.map(({ id, name }) => ( + + + + + ))} + +
{name} + {orgUnitCoverage + ? getDataItemCompatibility( + id, + { orgUnits } + )?.orgUnits?.map( + (result) => ( +
+ + { + result.id + } + {' '} + {' '} + {orgUnitAdviceFor( + result, + orgUnitCoverage.levels + )} +
+ ) + ) + : null} +
+ + } + /> + + )} +
+ ) +} + +TypicalUse.storyName = 'Typical use in Data Visualizer' diff --git a/src/__fixtures__/dataItemProfileMetadata.js b/src/__fixtures__/dataItemProfileMetadata.js new file mode 100644 index 000000000..15690a62f --- /dev/null +++ b/src/__fixtures__/dataItemProfileMetadata.js @@ -0,0 +1,3 @@ +// Data sets for a test data element, one per period type: `${periodType}Form` +export const inDataSets = (periodTypes) => + periodTypes.map((periodType) => ({ id: `${periodType}Form`, periodType })) diff --git a/src/__fixtures__/period-types/aggregation-by-period-type.json b/src/__fixtures__/period-types/aggregation-by-period-type.json new file mode 100644 index 000000000..010dbfa20 --- /dev/null +++ b/src/__fixtures__/period-types/aggregation-by-period-type.json @@ -0,0 +1,13421 @@ +{ + "schemaVersion": 1, + "group": "aggregation-by-period-type", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "smoke": "403 of 60306 cases, one per pattern", + "cases": [ + { + "id": "agg-AVERAGE__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.40.12": { "status": "REPEATED", "value": 6 }, + "2.41.10": { "status": "REPEATED", "value": 6 }, + "2.42.6": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, + "2.40.12": { "status": "VALUE", "value": 5.5 }, + "2.41.10": { "status": "VALUE", "value": 5.5 }, + "2.42.6": { "status": "VALUE", "value": 5.5 }, + "2.43.1": { "status": "VALUE", "value": 5.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, + "2.43.1": { "status": "VALUE", "value": 2.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 2.5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, + "2.42.6": { "status": "VALUE", "value": 2.5 }, + "2.43.1": { "status": "VALUE", "value": 2.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6.5 }, + "2.42.6": { "status": "VALUE", "value": 6.5 }, + "2.43.1": { "status": "VALUE", "value": 6.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_AVG_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1.5833333333 + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1.5833333333 + }, + "2.43.1": { "status": "REPEATED", "value": 1.5833333333 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_AVG_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.40.12": { "status": "REPEATED", "value": 2.5 }, + "2.41.10": { "status": "REPEATED", "value": 2.5 }, + "2.42.6": { "status": "REPEATED", "value": 2.5 }, + "2.43.1": { "status": "REPEATED", "value": 2.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6666666667 + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6666666667 + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6666666667 + }, + "2.42.6": { "status": "REPEATED", "value": 1.6666666667 }, + "2.43.1": { "status": "REPEATED", "value": 1.6666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_AVG_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 4 }, + "2.42.6": { "status": "REPEATED", "value": 4 }, + "2.43.1": { "status": "REPEATED", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 51 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 51 }, + "2.43.1": { "status": "VALUE", "value": 51 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.40.12": { "status": "REPEATED", "value": 6 }, + "2.41.10": { "status": "REPEATED", "value": 6 }, + "2.42.6": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 5.4876712329 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, + "2.40.12": { "status": "VALUE", "value": 5.4876712329 }, + "2.41.10": { "status": "VALUE", "value": 5.4876712329 }, + "2.42.6": { "status": "VALUE", "value": 5.4876712329 }, + "2.43.1": { "status": "VALUE", "value": 5.4876712329 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, + "2.43.1": { "status": "VALUE", "value": 1.674863388 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1.674863387978142 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, + "2.42.6": { "status": "VALUE", "value": 1.674863388 }, + "2.43.1": { "status": "VALUE", "value": 1.674863388 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 8.4673913043 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 8.4673913043 }, + "2.42.6": { "status": "VALUE", "value": 8.4673913043 }, + "2.43.1": { "status": "VALUE", "value": 8.4673913043 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1.5801457195 + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1.5801457195 + }, + "2.43.1": { "status": "REPEATED", "value": 1.5801457195 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, + "2.40.12": { "status": "REPEATED", "value": 2.5 }, + "2.41.10": { "status": "REPEATED", "value": 2.5 }, + "2.42.6": { "status": "REPEATED", "value": 2.5 }, + "2.43.1": { "status": "REPEATED", "value": 2.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6630236794 + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6675799087 + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1.6630236794 + }, + "2.42.6": { "status": "REPEATED", "value": 1.6675799087 }, + "2.43.1": { "status": "REPEATED", "value": 1.6630236794 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": 2 }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "REPEATED", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 4 }, + "2.42.6": { "status": "REPEATED", "value": 4 }, + "2.43.1": { "status": "REPEATED", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-AVERAGE_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_AVG_SUM_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 50.4456521739 }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 50.4456521739 + }, + "2.43.1": { "status": "VALUE", "value": 50.4456521739 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { "status": "VALUE", "value": 6 }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 4 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 2 }, + "2.42.6": { "status": "VALUE", "value": 2 }, + "2.43.1": { "status": "VALUE", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-COUNT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_COUNT_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_COUNT_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_COUNT_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_COUNT_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_COUNT_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_COUNT_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_COUNT_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-COUNT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_COUNT_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "COUNT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.43.1": { "status": "VALUE", "value": 13 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { "status": "REPEATED", "value": 1 }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 2 }, + "2.42.6": { "status": "VALUE", "value": 2 }, + "2.43.1": { "status": "VALUE", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { "status": "REPEATED", "value": 1 }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 2 }, + "2.42.6": { "status": "VALUE", "value": 2 }, + "2.43.1": { "status": "VALUE", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_AVG_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { "status": "REPEATED", "value": 1 }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 2 }, + "2.42.6": { "status": "VALUE", "value": 2 }, + "2.43.1": { "status": "VALUE", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-FIRST_FIRST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_FIRST_FIRST_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_FIRST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.40.12": { "status": "REPEATED", "value": 6 }, + "2.41.10": { "status": "REPEATED", "value": 6 }, + "2.42.6": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 4 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 4 }, + "2.42.6": { "status": "REPEATED", "value": 4 }, + "2.43.1": { "status": "REPEATED", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.40.12": { "status": "REPEATED", "value": 6 }, + "2.41.10": { "status": "REPEATED", "value": 6 }, + "2.42.6": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 4 }, + "2.42.6": { "status": "REPEATED", "value": 4 }, + "2.43.1": { "status": "REPEATED", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_AVG_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LIP_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LIP_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LIP_AVG_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.40.12": { "status": "REPEATED", "value": 6 }, + "2.41.10": { "status": "REPEATED", "value": 6 }, + "2.42.6": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, + "2.43.1": { "status": "REPEATED", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialFeb", + "period": "2024Feb", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { "status": "REPEATED", "value": 2 }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialFeb", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialFeb"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialNov"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 4 }, + "2.42.6": { "status": "REPEATED", "value": 4 }, + "2.43.1": { "status": "REPEATED", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_SixMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["SixMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 2 }, + "2.42.6": { "status": "REPEATED", "value": 2 }, + "2.43.1": { "status": "REPEATED", "value": 2 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "agg-LAST_LAST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_LAST_LAST_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_LAST_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.40.12": { "status": "VALUE", "value": 8 }, + "2.41.10": { "status": "VALUE", "value": 8 }, + "2.42.6": { "status": "VALUE", "value": 8 }, + "2.43.1": { "status": "VALUE", "value": 8 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 4 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_MAX_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_MAX_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MAX_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8 }, + "2.40.12": { "status": "VALUE", "value": 8 }, + "2.41.10": { "status": "VALUE", "value": 8 }, + "2.42.6": { "status": "VALUE", "value": 8 }, + "2.43.1": { "status": "VALUE", "value": 8 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MAX_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MAX_SUM_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MAX_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, + "2.43.1": { "status": "VALUE", "value": 57 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.40.12": { "status": "VALUE", "value": 3 }, + "2.41.10": { "status": "VALUE", "value": 3 }, + "2.42.6": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_MIN_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_MIN_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MIN_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 45 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 45 }, + "2.43.1": { "status": "VALUE", "value": 45 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.40.12": { "status": "VALUE", "value": 3 }, + "2.41.10": { "status": "VALUE", "value": 3 }, + "2.42.6": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 6 }, + "2.42.6": { "status": "VALUE", "value": 6 }, + "2.43.1": { "status": "VALUE", "value": 6 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-MIN_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_MIN_SUM_OU_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "MIN_SUM_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 45 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 45 }, + "2.43.1": { "status": "VALUE", "value": 45 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_NONE_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_NONE_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_NONE_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_NONE_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_NONE_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_NONE_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_NONE_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.41.11-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.42.7-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.42.6": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-NONE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_NONE_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "NONE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "ERROR", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" + }, + "2.43.3-SNAPSHOT": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" + }, + "2.43.1": { + "status": "ERROR", + "value": null, + "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.40.12": { "status": "VALUE", "value": 0 }, + "2.41.10": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1.8708286934 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, + "2.40.12": { "status": "VALUE", "value": 1.8708286934 }, + "2.41.10": { "status": "VALUE", "value": 1.8708286934 }, + "2.42.6": { "status": "VALUE", "value": 1.8708286934 }, + "2.43.1": { "status": "VALUE", "value": 1.8708286934 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, + "2.43.1": { "status": "VALUE", "value": 1.2909944487 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, + "2.42.6": { "status": "VALUE", "value": 1.2909944487 }, + "2.43.1": { "status": "VALUE", "value": 1.2909944487 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 0.7071067812 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 0.7071067812 }, + "2.42.6": { "status": "VALUE", "value": 0.7071067812 }, + "2.43.1": { "status": "VALUE", "value": 0.7071067812 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_STDDEV_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-STDDEV__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-STDDEV__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_STDDEV_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "STDDEV", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3.8944404818 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3.8944404818 }, + "2.43.1": { "status": "VALUE", "value": 3.8944404818 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 7 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, + "2.40.12": { "status": "VALUE", "value": 7 }, + "2.41.10": { "status": "VALUE", "value": 7 }, + "2.42.6": { "status": "VALUE", "value": 7 }, + "2.43.1": { "status": "VALUE", "value": 7 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 33 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 33 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 33 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 33 }, + "2.40.12": { "status": "VALUE", "value": 33 }, + "2.41.10": { "status": "VALUE", "value": 33 }, + "2.42.6": { "status": "VALUE", "value": 33 }, + "2.43.1": { "status": "VALUE", "value": 33 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 10 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 10 }, + "2.43.1": { "status": "VALUE", "value": 10 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 10 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 10 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 10 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 10 }, + "2.42.6": { "status": "VALUE", "value": 10 }, + "2.43.1": { "status": "VALUE", "value": 10 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 13 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 13 }, + "2.42.6": { "status": "VALUE", "value": 13 }, + "2.43.1": { "status": "VALUE", "value": 13 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-SUM__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_SUM_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_SUM_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_SUM_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_SUM_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_SUM_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_SUM_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_SUM_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-SUM__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_SUM_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 663 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 663 }, + "2.43.1": { "status": "VALUE", "value": 663 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.40.12": { "status": "VALUE", "value": 0 }, + "2.41.10": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-FinancialApril__p-2024April__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialApril", + "period": "2024April", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, + "2.40.12": { "status": "VALUE", "value": 3.5 }, + "2.41.10": { "status": "VALUE", "value": 3.5 }, + "2.42.6": { "status": "VALUE", "value": 3.5 }, + "2.43.1": { "status": "VALUE", "value": 3.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, + "2.43.1": { "status": "VALUE", "value": 1.6666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, + "2.42.6": { "status": "VALUE", "value": 1.6666666667 }, + "2.43.1": { "status": "VALUE", "value": 1.6666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 0.5 }, + "2.42.6": { "status": "VALUE", "value": 0.5 }, + "2.43.1": { "status": "VALUE", "value": 0.5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G1_VAR_BiMonthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiMonthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_VAR_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialApril__q-FinancialJuly__p-2024July__A", + "item": { + "code": "PTT_G1_VAR_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialJuly", + "period": "2024July", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_VAR_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G1_VAR_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialSep__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G1_VAR_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G1_VAR_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_Quarterly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "agg-VARIANCE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_QuarterlyNov", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["QuarterlyNov"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 0 }, + "2.42.6": { "status": "VALUE", "value": 0 }, + "2.43.1": { "status": "VALUE", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "agg-VARIANCE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G1_VAR_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "VARIANCE", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 15.1666666667 }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 15.1666666667 + }, + "2.43.1": { "status": "VALUE", "value": 15.1666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + } + ] +} diff --git a/src/__fixtures__/period-types/carry-windows.json b/src/__fixtures__/period-types/carry-windows.json new file mode 100644 index 000000000..9e3125cf4 --- /dev/null +++ b/src/__fixtures__/period-types/carry-windows.json @@ -0,0 +1,6427 @@ +{ + "schemaVersion": 1, + "group": "carry-windows", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "findings": { + "2.44-SNAPSHOT": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.41.11-SNAPSHOT": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.42.7-SNAPSHOT": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.43.3-SNAPSHOT": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.40.12": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.41.10": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.42.6": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + }, + "2.43.1": { + "rules": { + "FIRST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Daily": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0", + "start<=q.end, date-year>=q-0", + "start<=q.end, mixed-year>=q-0" + ], + "matched": 536, + "missed": [ + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-sparse-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Weekly": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 441, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Weekly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, mixed-year>=q-0"], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD WeeklyWednesday": { + "cases": 634, + "bestRules": ["end<=q.end, date-year>=q-0"], + "matched": 442, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240115__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-WeeklyWednesday__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Monthly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Monthly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 405, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240201__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240215__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240301__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240315__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Monthly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Quarterly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Quarterly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 414, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240401__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240415__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240501__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240515__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Quarterly__q-Daily__p-20240601__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT Yearly": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD Yearly": { + "cases": 634, + "bestRules": ["end<=q.end, id-year>=q-0"], + "matched": 621, + "missed": [ + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202412__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Monthly__p-202512__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2024Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-Quarterly__p-2025Q4__A", + "source": null, + "status": "EMPTY" + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Yearly__q-FinancialApril__p-2024April__A", + "source": null, + "status": "EMPTY" + } + ] + }, + "FIRST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "FIRST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_AVERAGE_ORG_UNIT FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + }, + "LAST_IN_PERIOD FinancialApril": { + "cases": 634, + "bestRules": [ + "end<=q.end, date-year>=q-0", + "end<=q.end, id-year>=q-0", + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, + "missed": [] + } + }, + "pairs": { + "FIRST__col-Daily__q-Daily__p-20250715__with-alone": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20250101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20240615": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-20230101": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-202501": "20250101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2024": "20240101", + "FIRST__col-Daily__q-Daily__p-20250715__with-2023": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-alone": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20250101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20240615": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-20230101": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-202501": "20250101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2024": "20240101", + "FIRST__col-Daily__q-Monthly__p-202507__with-2023": "20250101", + "LAST__col-Daily__q-Daily__p-20250715__with-alone": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20250101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20240615": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-20230101": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-202501": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2024": "20250715", + "LAST__col-Daily__q-Daily__p-20250715__with-2023": "20250715", + "LAST__col-Daily__q-Monthly__p-202507__with-alone": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20250101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20240615": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-20230101": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-202501": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2024": "20250731", + "LAST__col-Daily__q-Monthly__p-202507__with-2023": "20250731", + "FIRST__col-Monthly__q-Daily__p-20250715__with-alone": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20250101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20240615": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-20230101": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-202501": "202501", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2024": "202401", + "FIRST__col-Monthly__q-Daily__p-20250715__with-2023": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-alone": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20250101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20240615": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-20230101": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-202501": "202501", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2024": "202401", + "FIRST__col-Monthly__q-Monthly__p-202507__with-2023": "202501", + "LAST__col-Monthly__q-Daily__p-20250715__with-alone": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20250101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20240615": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-20230101": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-202501": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2024": "202506", + "LAST__col-Monthly__q-Daily__p-20250715__with-2023": "202506", + "LAST__col-Monthly__q-Monthly__p-202507__with-alone": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20250101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20240615": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-20230101": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-202501": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2024": "202507", + "LAST__col-Monthly__q-Monthly__p-202507__with-2023": "202507" + } + } + }, + "smoke": "38 of 22246 cases, one per pattern", + "cases": [ + { + "id": "carry-dense-FIRST__col-Daily__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-Daily__q-Daily__p-20240101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-Daily__q-FinancialApril__p-2022April__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2022April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-Daily__q-FinancialApril__p-2023April__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2023April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-FinancialApril__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-FinancialApril__q-Yearly__p-2023__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Yearly", + "period": "2023", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-Monthly__q-Daily__p-20240201__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Monthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240201", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "202401" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_Weekly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2024WedW11", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2022April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2023April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Yearly", + "period": "2023", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Monthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240201", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "202401" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", + "item": { + "code": "PTT_G7_DENSE_FIRST_AVG_OU_Weekly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "FIRST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2024WedW11", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "2024W1" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Daily__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Daily__q-Daily__p-20240101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Daily__q-FinancialApril__p-2022April__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2022April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Daily__q-FinancialApril__p-2023April__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2023April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.40.12": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.10": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.6": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.1": { + "status": "VALUE", + "value": 91, + "source": "20240331" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-FinancialApril__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-FinancialApril__q-Yearly__p-2023__A", + "item": { + "code": "PTT_G7_DENSE_LAST_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Yearly", + "period": "2023", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Monthly__q-Daily__p-20240201__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Monthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240201", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "202401" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", + "item": { + "code": "PTT_G7_DENSE_LAST_Weekly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2024WedW11", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.40.12": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.41.10": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.42.6": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.43.1": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2022April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2023April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.40.12": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.10": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.6": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.1": { + "status": "VALUE", + "value": 91, + "source": "20240331" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Yearly", + "period": "2023", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Monthly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240201", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.40.12": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.41.10": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.42.6": { + "status": "REPEATED", + "value": 1, + "source": "202401" + }, + "2.43.1": { + "status": "REPEATED", + "value": 1, + "source": "202401" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", + "item": { + "code": "PTT_G7_DENSE_LAST_AVG_OU_Weekly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_AVERAGE_ORG_UNIT", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Layout dense." + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2024WedW11", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.41.11-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.42.7-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.43.3-SNAPSHOT": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.40.12": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.41.10": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.42.6": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + }, + "2.43.1": { + "status": "REPEATED", + "value": 11, + "source": "2024W11" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LIP_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20240101__A", + "item": { + "code": "PTT_G7_DENSE_LIP_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20240101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.40.12": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.41.10": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.42.6": { + "status": "VALUE", + "value": 1, + "source": "20240101" + }, + "2.43.1": { + "status": "VALUE", + "value": 1, + "source": "20240101" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2022April__A", + "item": { + "code": "PTT_G7_DENSE_LIP_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2022April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2023April__A", + "item": { + "code": "PTT_G7_DENSE_LIP_Daily", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Daily"], + "notes": "Layout dense." + }, + "query": { + "periodType": "FinancialApril", + "period": "2023April", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.40.12": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.41.10": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.42.6": { + "status": "VALUE", + "value": 91, + "source": "20240331" + }, + "2.43.1": { + "status": "VALUE", + "value": 91, + "source": "20240331" + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Daily__p-20230101__A", + "item": { + "code": "PTT_G7_DENSE_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Daily", + "period": "20230101", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Yearly__p-2023__A", + "item": { + "code": "PTT_G7_DENSE_LIP_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "LAST_IN_PERIOD", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"], + "notes": "Layout dense." + }, + "query": { + "periodType": "Yearly", + "period": "2023", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "source": null + }, + "2.40.12": { "status": "EMPTY", "value": null, "source": null }, + "2.41.10": { "status": "EMPTY", "value": null, "source": null }, + "2.42.6": { "status": "EMPTY", "value": null, "source": null }, + "2.43.1": { "status": "EMPTY", "value": null, "source": null } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + } + ] +} diff --git a/src/__fixtures__/period-types/detection-requests.json b/src/__fixtures__/period-types/detection-requests.json new file mode 100644 index 000000000..13590b1ee --- /dev/null +++ b/src/__fixtures__/period-types/detection-requests.json @@ -0,0 +1,956 @@ +{ + "schemaVersion": 1, + "group": "detection-requests", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "smoke": "17 of 46 cases, one per pattern", + "cases": [ + { + "id": "meta-aggregationTypes", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/schemas/dataElement.json?fields=properties[fieldName,constants]" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-dataElements", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.40.12": { "status": "VALUE", "value": 4 }, + "2.41.10": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-dataElements-dataSets", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,dataSets[id,periodType]&paging=false&order=code:asc" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, + "2.40.12": { "status": "VALUE", "value": 4 }, + "2.41.10": { "status": "VALUE", "value": 4 }, + "2.42.6": { "status": "VALUE", "value": 4 }, + "2.43.1": { "status": "VALUE", "value": 4 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-dataItems", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/dataItems.json?filter=name:ilike:PTT G4&fields=id,name,dimensionItemType,expression,aggregationType,valueType&paging=false&order=name:asc" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 17 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 17 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 17 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 17 }, + "2.40.12": { "status": "VALUE", "value": 17 }, + "2.41.10": { "status": "VALUE", "value": 17 }, + "2.42.6": { "status": "VALUE", "value": 17 }, + "2.43.1": { "status": "VALUE", "value": 17 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-dataSets", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { "status": "VALUE", "value": 5 }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-expressionDimensionItems", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-indicators", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 11 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 11 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 11 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 11 }, + "2.40.12": { "status": "VALUE", "value": 11 }, + "2.41.10": { "status": "VALUE", "value": 11 }, + "2.42.6": { "status": "VALUE", "value": 11 }, + "2.43.1": { "status": "VALUE", "value": 11 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "meta-periodTypes", + "item": { + "notes": "Metadata request; the response is in metadata-shapes.json." + }, + "query": { + "request": "/api/periodTypes.json?fields=name,isoFormat,isoDuration,frequencyOrder" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 24 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 19 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 20 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 24 }, + "2.40.12": { "status": "VALUE", "value": 19 }, + "2.41.10": { "status": "VALUE", "value": 19 }, + "2.42.6": { "status": "VALUE", "value": 20 }, + "2.43.1": { "status": "VALUE", "value": 24 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-history__r-2024__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left." + }, + "query": { + "request": "rawData", + "startDate": "2024-01-01", + "endDate": "2024-12-31", + "orgUnit": "A" + }, + "expected": { + "status": "VALUE", + "value": null, + "periodTypes": ["Monthly"] + }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-mw__r-2024__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B." + }, + "query": { + "request": "rawData", + "startDate": "2024-01-01", + "endDate": "2024-12-31", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-mw__r-2025__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B." + }, + "query": { + "request": "rawData", + "startDate": "2025-01-01", + "endDate": "2025-12-31", + "orgUnit": "A" + }, + "expected": { + "status": "VALUE", + "value": null, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.40.12": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.41.10": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.42.6": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + }, + "2.43.1": { + "status": "VALUE", + "value": 24, + "periodTypes": ["Weekly", "WeeklyWednesday"] + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-orphan__r-2024__A", + "item": { + "code": "PTT_G3_ORPHAN", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": [], + "notes": "Monthly values, then removed from its only data set." + }, + "query": { + "request": "rawData", + "startDate": "2024-01-01", + "endDate": "2024-12-31", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-orphan__r-2025__A", + "item": { + "code": "PTT_G3_ORPHAN", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": [], + "notes": "Monthly values, then removed from its only data set." + }, + "query": { + "request": "rawData", + "startDate": "2025-01-01", + "endDate": "2025-12-31", + "orgUnit": "A" + }, + "expected": { + "status": "VALUE", + "value": null, + "periodTypes": ["Monthly"] + }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-place__r-2024__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B." + }, + "query": { + "request": "rawData", + "startDate": "2024-01-01", + "endDate": "2024-12-31", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": 0, + "periodTypes": [] + }, + "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, + "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-place__r-2025__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B." + }, + "query": { + "request": "rawData", + "startDate": "2025-01-01", + "endDate": "2025-12-31", + "orgUnit": "A" + }, + "expected": { + "status": "VALUE", + "value": null, + "periodTypes": ["Monthly"] + }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Monthly"] + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "raw-range-inside-only", + "item": { + "code": "PTT_G1_SUM_Weekly", + "notes": "And PTT_G1_SUM_Monthly." + }, + "query": { + "request": "rawData", + "startDate": "2025-04-15", + "endDate": "2025-05-15", + "orgUnit": "A" + }, + "expected": { "status": null, "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "periodTypes": ["Weekly"], + "periods": ["2025W17", "2025W18", "2025W19"] + } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "raw-row-limit", + "item": { + "notes": "G1 elements but NONE, collected Daily, Weekly, WeeklyWednesday, WeeklyThursday, WeeklyFriday, WeeklySaturday, WeeklySunday, BiWeekly, Monthly: 51408 values." + }, + "query": { + "request": "rawData", + "startDate": "2024-01-01", + "endDate": "2025-12-31", + "orgUnit": "A;B" + }, + "expected": { "status": "VALUE", "value": 51408 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 51408, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklyFriday", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 47700, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 47700, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 51408, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklyFriday", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.40.12": { + "status": "VALUE", + "value": 47700, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.41.10": { + "status": "VALUE", + "value": 47700, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.42.6": { + "status": "VALUE", + "value": 47700, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + }, + "2.43.1": { + "status": "VALUE", + "value": 51408, + "periodTypes": [ + "BiWeekly", + "Daily", + "Monthly", + "Weekly", + "WeeklyFriday", + "WeeklySaturday", + "WeeklySunday", + "WeeklyThursday", + "WeeklyWednesday" + ] + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + } + ] +} diff --git a/src/__fixtures__/period-types/indicators-and-expressions.json b/src/__fixtures__/period-types/indicators-and-expressions.json new file mode 100644 index 000000000..b47738ef2 --- /dev/null +++ b/src/__fixtures__/period-types/indicators-and-expressions.json @@ -0,0 +1,3427 @@ +{ + "schemaVersion": 1, + "group": "indicators-and-expressions", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "smoke": "79 of 1656 cases, one per pattern and 13 the library's tests name", + "cases": [ + { + "id": "ind-constant__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_CONSTANT", + "dimensionItemType": "INDICATOR", + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { "status": "VALUE", "value": 5 }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-constant__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_CONSTANT", + "dimensionItemType": "INDICATOR", + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-constant__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_CONSTANT", + "dimensionItemType": "INDICATOR", + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-constant__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_CONSTANT", + "dimensionItemType": "INDICATOR", + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 5 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 5 }, + "2.42.6": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-averaged__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 0.20454545454545456 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 0.2045454545 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, + "2.40.12": { "status": "VALUE", "value": 0.2045454545 }, + "2.41.10": { "status": "VALUE", "value": 0.2045454545 }, + "2.42.6": { "status": "VALUE", "value": 0.2045454545 }, + "2.43.1": { "status": "VALUE", "value": 0.2045454545 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-averaged__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-averaged__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2326958106 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2326958106 }, + "2.43.1": { "status": "VALUE", "value": 0.2326958106 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, + "2.42.6": { "status": "VALUE", "value": 0.3 }, + "2.43.1": { "status": "VALUE", "value": 0.2991803279 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 0.3 }, + "2.42.6": { "status": "VALUE", "value": 0.3 }, + "2.43.1": { "status": "VALUE", "value": 0.3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1.2654083205 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, + "2.40.12": { "status": "VALUE", "value": 1.2654083205 }, + "2.41.10": { "status": "VALUE", "value": 1.2654083205 }, + "2.42.6": { "status": "VALUE", "value": 1.2654083205 }, + "2.43.1": { "status": "VALUE", "value": 1.2654083205 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2320600297 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2320600297 }, + "2.43.1": { "status": "VALUE", "value": 0.2320600297 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2983628953 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2983628953 }, + "2.42.6": { "status": "VALUE", "value": 0.2991803279 }, + "2.43.1": { "status": "VALUE", "value": 0.2983628953 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 1.1902173913 + }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1.1902173913 }, + "2.42.6": { "status": "VALUE", "value": 1.1902173913 }, + "2.43.1": { "status": "VALUE", "value": 1.1902173913 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-coverage-averaged-annualized__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "annualized": true, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "UB785RAqE9h", + "ref": "popAvg", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "AVERAGE_SUM_ORG_UNIT", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-summed__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "nxyiifFYsbc", + "ref": "popSum", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-summed__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "nxyiifFYsbc", + "ref": "popSum", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-summed__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "nxyiifFYsbc", + "ref": "popSum", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-summed__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "nxyiifFYsbc", + "ref": "popSum", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-coverage-summed__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + }, + { + "id": "nxyiifFYsbc", + "ref": "popSum", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Yearly"] + } + ] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 0.65 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, + "2.40.12": { "status": "VALUE", "value": 0.65 }, + "2.41.10": { "status": "VALUE", "value": 0.65 }, + "2.42.6": { "status": "VALUE", "value": 0.65 }, + "2.43.1": { "status": "VALUE", "value": 0.65 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-days__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_DAYS", + "dimensionItemType": "INDICATOR", + "numerator": "[days]", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 59 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.40.12": { "status": "VALUE", "value": 59 }, + "2.41.10": { "status": "VALUE", "value": 59 }, + "2.42.6": { "status": "VALUE", "value": 59 }, + "2.43.1": { "status": "VALUE", "value": 59 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-days__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_DAYS", + "dimensionItemType": "INDICATOR", + "numerator": "[days]", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 366 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.1": { "status": "VALUE", "value": 366 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-days__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_DAYS", + "dimensionItemType": "INDICATOR", + "numerator": "[days]", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 366 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.42.6": { "status": "VALUE", "value": 366 }, + "2.43.1": { "status": "VALUE", "value": 366 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-days__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_DAYS", + "dimensionItemType": "INDICATOR", + "numerator": "[days]", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 92 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 92 }, + "2.42.6": { "status": "VALUE", "value": 92 }, + "2.43.1": { "status": "VALUE", "value": 92 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 27 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.40.12": { "status": "VALUE", "value": 27 }, + "2.41.10": { "status": "VALUE", "value": 27 }, + "2.42.6": { "status": "VALUE", "value": 27 }, + "2.43.1": { "status": "VALUE", "value": 27 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 28 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.1": { "status": "VALUE", "value": 28 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_DE", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 27 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.40.12": { "status": "VALUE", "value": 27 }, + "2.41.10": { "status": "VALUE", "value": 27 }, + "2.42.6": { "status": "VALUE", "value": 27 }, + "2.43.1": { "status": "VALUE", "value": 27 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 28 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.1": { "status": "VALUE", "value": 28 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-de-coc__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_DE_COC", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 54 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 54 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 54 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 54 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 54 }, + "2.40.12": { "status": "VALUE", "value": 54 }, + "2.41.10": { "status": "VALUE", "value": 54 }, + "2.42.6": { "status": "VALUE", "value": 54 }, + "2.43.1": { "status": "VALUE", "value": 54 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 56 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 56 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 56 }, + "2.43.1": { "status": "VALUE", "value": 56 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 72 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.42.6": { "status": "VALUE", "value": 72 }, + "2.43.1": { "status": "VALUE", "value": 72 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 72 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 72 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 72 }, + "2.42.6": { "status": "VALUE", "value": 72 }, + "2.43.1": { "status": "VALUE", "value": 72 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-expression__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_EXPRESSION", + "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", + "expression": "#{BeN8IzxwwJF}*2", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 27 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.40.12": { "status": "VALUE", "value": 27 }, + "2.41.10": { "status": "VALUE", "value": 27 }, + "2.42.6": { "status": "VALUE", "value": 27 }, + "2.43.1": { "status": "VALUE", "value": 27 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 28 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.1": { "status": "VALUE", "value": 28 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-indicator__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_INDICATOR", + "dimensionItemType": "INDICATOR", + "numerator": "N{qxTEoP6Na0L}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "qxTEoP6Na0L", + "ref": "indicator-de", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}", + "denominator": "1", + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-org-unit-group__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_ORG_UNIT_GROUP", + "dimensionItemType": "INDICATOR", + "numerator": "OUG{PSXFPFGOyIb}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-org-unit-group__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_ORG_UNIT_GROUP", + "dimensionItemType": "INDICATOR", + "numerator": "OUG{PSXFPFGOyIb}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-org-unit-group__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_ORG_UNIT_GROUP", + "dimensionItemType": "INDICATOR", + "numerator": "OUG{PSXFPFGOyIb}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-org-unit-group__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_ORG_UNIT_GROUP", + "dimensionItemType": "INDICATOR", + "numerator": "OUG{PSXFPFGOyIb}", + "denominator": "1", + "annualized": false, + "operands": [] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-period-offset__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 23 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 23 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 23 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 23 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 23 }, + "2.40.12": { "status": "VALUE", "value": 23 }, + "2.41.10": { "status": "VALUE", "value": 23 }, + "2.42.6": { "status": "VALUE", "value": 23 }, + "2.43.1": { "status": "VALUE", "value": 23 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialAug__p-2023Aug__B", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "B" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialAug__p-2023Aug__region", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "region" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialAug__p-2024Aug__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2024Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 28 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, + "2.43.1": { "status": "VALUE", "value": 28 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialNov__p-2024Nov__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialNov", + "period": "2024Nov", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialNov__p-2024Nov__B", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialNov", + "period": "2024Nov", + "orgUnit": "B" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialNov__p-2024Nov__region", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialNov", + "period": "2024Nov", + "orgUnit": "region" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialOct__p-2023Oct__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialOct", + "period": "2023Oct", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialOct__p-2023Oct__B", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialOct", + "period": "2023Oct", + "orgUnit": "B" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialOct__p-2023Oct__region", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialOct", + "period": "2023Oct", + "orgUnit": "region" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialSep__p-2023Sep__B", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "B" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialSep__p-2023Sep__region", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "region" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-FinancialSep__p-2024Sep__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2024Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, + "2.42.6": { "status": "VALUE", "value": 36 }, + "2.43.1": { "status": "VALUE", "value": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 27 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 27 }, + "2.42.6": { "status": "VALUE", "value": 27 }, + "2.43.1": { "status": "VALUE", "value": 27 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-Yearly__p-2024__B", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "B" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-period-offset__q-Yearly__p-2024__region", + "item": { + "code": "PTT_G4_IND_PERIOD_OFFSET", + "dimensionItemType": "INDICATOR", + "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "BeN8IzxwwJF", + "ref": "count", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "region" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "ind-reporting-rate__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.40.12": { "status": "VALUE", "value": 100 }, + "2.41.10": { "status": "VALUE", "value": 100 }, + "2.42.6": { "status": "VALUE", "value": 100 }, + "2.43.1": { "status": "VALUE", "value": 100 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-reporting-rate__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "ind-reporting-rate__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 58.3333333333 }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 58.3333333333 + }, + "2.43.1": { "status": "VALUE", "value": 58.3333333333 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-reporting-rate__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 66.6666666667 }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 66.6666666667 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 66.6666666667 + }, + "2.42.6": { "status": "VALUE", "value": 66.6666666667 }, + "2.43.1": { "status": "VALUE", "value": 66.6666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-reporting-rate__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 100 }, + "2.42.6": { "status": "VALUE", "value": 100 }, + "2.43.1": { "status": "VALUE", "value": 100 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "fail", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "ind-reporting-rate__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G4_IND_REPORTING_RATE", + "dimensionItemType": "INDICATOR", + "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", + "denominator": "1", + "annualized": false, + "operands": [ + { + "id": "FUvJSlEH9B3", + "ref": "rate", + "dimensionItemType": "REPORTING_RATE", + "aggregationType": "SUM", + "collectionPeriodTypes": ["Monthly"] + } + ] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + } + ] +} diff --git a/src/__fixtures__/period-types/metadata-shapes.json b/src/__fixtures__/period-types/metadata-shapes.json new file mode 100644 index 000000000..71882e71f --- /dev/null +++ b/src/__fixtures__/period-types/metadata-shapes.json @@ -0,0 +1,1703 @@ +{ + "schemaVersion": 1, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "versions": { + "2.44-SNAPSHOT": { + "instance": "dev", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "aggregationType": "SUM", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.41.11-SNAPSHOT": { + "instance": "dev-2-41", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.42.7-SNAPSHOT": { + "instance": "dev-2-42", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.43.3-SNAPSHOT": { + "instance": "dev-2-43", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.40.12": { + "instance": "stable-2-40-12", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.41.10": { + "instance": "stable-2-41-10", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.42.6": { + "instance": "stable-2-42-6", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + }, + "2.43.1": { + "instance": "stable-2-43-1", + "date": "2026-10-01", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + } + ] + } + }, + "smoke": "Requests dataElements, indicators, dataSets, expressionDimensionItems; the first 4 objects of each list, and PTT_G3_MW and PTT_G3_ORPHAN in dataElements." +} diff --git a/src/__fixtures__/period-types/mixed-collection.json b/src/__fixtures__/period-types/mixed-collection.json new file mode 100644 index 000000000..bdced8860 --- /dev/null +++ b/src/__fixtures__/period-types/mixed-collection.json @@ -0,0 +1,1739 @@ +{ + "schemaVersion": 1, + "group": "mixed-collection", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "smoke": "22 of 105 cases, one per pattern", + "cases": [ + { + "id": "mixed-history__q-BiWeekly__r-2024Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2024Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-history__q-BiWeekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 12 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.40.12": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.41.10": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.42.6": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + }, + "2.43.1": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 6 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-history__q-Daily__r-2024Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "Daily", + "period": "2024Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-history__q-Weekly__r-2024Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2024Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-history__q-Weekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 12 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.40.12": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.41.10": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.42.6": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + }, + "2.43.1": { + "status": "VALUE", + "value": 12, + "coarse": 12, + "rows": 12 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-history__q-WeeklyWednesday__r-2024Q2__A", + "item": { + "code": "PTT_G3_HISTORY", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly"], + "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", + "collectionSources": [ + { + "dataSet": "PTT G3 history data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2024Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-mw__q-BiWeekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", + "collectionSources": [ + { + "dataSet": "PTT G3 mw data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + }, + { + "dataSet": "PTT G3 mw data set WeeklyWednesday", + "periodType": "WeeklyWednesday", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 36 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.40.12": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.41.10": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.42.6": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + }, + "2.43.1": { + "status": "VALUE", + "value": 36, + "coarse": 36, + "rows": 7 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-mw__q-Daily__r-2025Q2__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", + "collectionSources": [ + { + "dataSet": "PTT G3 mw data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + }, + { + "dataSet": "PTT G3 mw data set WeeklyWednesday", + "periodType": "WeeklyWednesday", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "Daily", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 36 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 36 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 36 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 36 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 36 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 36 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 36 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 36 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-mw__q-Weekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", + "collectionSources": [ + { + "dataSet": "PTT G3 mw data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + }, + { + "dataSet": "PTT G3 mw data set WeeklyWednesday", + "periodType": "WeeklyWednesday", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "PARTIAL", "value": 12 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.41.11-SNAPSHOT": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.42.7-SNAPSHOT": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.43.3-SNAPSHOT": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.40.12": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.41.10": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.42.6": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + }, + "2.43.1": { + "status": "PARTIAL", + "value": 12, + "coarse": 36, + "rows": 12 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-mw__q-WeeklyWednesday__r-2025Q2__A", + "item": { + "code": "PTT_G3_MW", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], + "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", + "collectionSources": [ + { + "dataSet": "PTT G3 mw data set Weekly", + "periodType": "Weekly", + "orgUnits": ["A", "B"] + }, + { + "dataSet": "PTT G3 mw data set WeeklyWednesday", + "periodType": "WeeklyWednesday", + "orgUnits": ["A", "B"] + } + ] + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "PARTIAL", "value": 24 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.41.11-SNAPSHOT": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.42.7-SNAPSHOT": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.43.3-SNAPSHOT": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.40.12": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.41.10": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.42.6": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + }, + "2.43.1": { + "status": "PARTIAL", + "value": 24, + "coarse": 36, + "rows": 12 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-orphan__q-BiWeekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_ORPHAN", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": [], + "notes": "Monthly values, then removed from its only data set.", + "collectionSources": [] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-orphan__q-Monthly__r-2025Q2__A", + "item": { + "code": "PTT_G3_ORPHAN", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": [], + "notes": "Monthly values, then removed from its only data set.", + "collectionSources": [] + }, + "query": { + "periodType": "Monthly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 3 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-BiWeekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-BiWeekly__r-2025Q2__B", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "B", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 120 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.40.12": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.41.10": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.42.6": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + }, + "2.43.1": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 6 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-BiWeekly__r-2025Q2__region", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025Q2", + "orgUnit": "region", + "coarser": "Quarterly" + }, + "expected": { "status": "PARTIAL", "value": 120 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.41.11-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.42.7-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.43.3-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.40.12": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.41.10": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.42.6": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + }, + "2.43.1": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 6 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Daily__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Daily", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Monthly__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Monthly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 3 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 3 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Quarterly__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Quarterly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 3 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.40.12": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.41.10": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.42.6": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + }, + "2.43.1": { + "status": "VALUE", + "value": 3, + "coarse": 3, + "rows": 1 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Weekly__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Weekly__r-2025Q2__B", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2025Q2", + "orgUnit": "B", + "coarser": "Quarterly" + }, + "expected": { "status": "VALUE", "value": 120 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.41.11-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.40.12": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.41.10": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.42.6": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + }, + "2.43.1": { + "status": "VALUE", + "value": 120, + "coarse": 120, + "rows": 12 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-Weekly__r-2025Q2__region", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "Weekly", + "period": "2025Q2", + "orgUnit": "region", + "coarser": "Quarterly" + }, + "expected": { "status": "PARTIAL", "value": 120 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.41.11-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.42.7-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.43.3-SNAPSHOT": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.40.12": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.41.10": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.42.6": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + }, + "2.43.1": { + "status": "PARTIAL", + "value": 120, + "coarse": 123, + "rows": 12 + } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "mixed-place__q-WeeklyWednesday__r-2025Q2__A", + "item": { + "code": "PTT_G3_PLACE", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["Monthly", "Weekly"], + "notes": "Monthly at A, weekly at B.", + "collectionSources": [ + { + "dataSet": "PTT G3 place data set Monthly", + "periodType": "Monthly", + "orgUnits": ["A"] + }, + { + "dataSet": "PTT G3 place data set Weekly", + "periodType": "Weekly", + "orgUnits": ["B"] + } + ] + }, + "query": { + "periodType": "WeeklyWednesday", + "period": "2025Q2", + "orgUnit": "A", + "coarser": "Quarterly" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.41.11-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.42.7-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.43.3-SNAPSHOT": { + "status": "EMPTY", + "value": null, + "coarse": 3 + }, + "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, + "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + } + ] +} diff --git a/src/__fixtures__/period-types/periods-that-dont-nest.json b/src/__fixtures__/period-types/periods-that-dont-nest.json new file mode 100644 index 000000000..382801a0e --- /dev/null +++ b/src/__fixtures__/period-types/periods-that-dont-nest.json @@ -0,0 +1,1363 @@ +{ + "schemaVersion": 1, + "group": "periods-that-dont-nest", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "findings": { + "2.44-SNAPSHOT": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyFriday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyFriday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyFriday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialFeb by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialAug by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialSep by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.41.11-SNAPSHOT": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.42.7-SNAPSHOT": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialSep by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.43.3-SNAPSHOT": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyFriday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyFriday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyFriday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialFeb by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialAug by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialSep by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.40.12": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.41.10": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.42.6": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialSep by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + }, + "2.43.1": { + "Weekly by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "Weekly by Quarterly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 8 + }, + "Weekly by Yearly": { + "rules": ["end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyWednesday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyWednesday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyWednesday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyThursday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyThursday by Quarterly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyThursday by Yearly": { + "rules": ["start", "mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklyFriday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklyFriday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklyFriday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySaturday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySaturday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySaturday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "WeeklySunday by Monthly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 24 + }, + "WeeklySunday by Quarterly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 8 + }, + "WeeklySunday by Yearly": { + "rules": ["mostDays"], + "empty": 0, + "cases": 2 + }, + "BiWeekly by Monthly": { + "rules": ["start"], + "empty": 0, + "cases": 24 + }, + "BiWeekly by Quarterly": { + "rules": ["start"], + "empty": 0, + "cases": 8 + }, + "BiWeekly by Yearly": { + "rules": ["start"], + "empty": 0, + "cases": 2 + }, + "QuarterlyNov by Quarterly": { + "rules": [], + "empty": 8, + "cases": 8 + }, + "QuarterlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyApril by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "SixMonthlyNov by Yearly": { + "rules": ["start", "end", "mostDays"], + "empty": 0, + "cases": 2 + }, + "FinancialApril by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialJuly by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialOct by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialNov by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialFeb by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialAug by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + }, + "FinancialSep by Yearly": { + "rules": [], + "empty": 2, + "cases": 2 + } + } + }, + "smoke": "5 of 266 cases, one per pattern", + "cases": [ + { + "id": "nest-BiWeekly__q-Monthly__p-202401__A", + "item": { + "code": "PTT_G2_BiWeekly", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["BiWeekly"] + }, + "query": { + "periodType": "Monthly", + "period": "202401", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, + "2.40.12": { "status": "VALUE", "value": 3 }, + "2.41.10": { "status": "VALUE", "value": 3 }, + "2.42.6": { "status": "VALUE", "value": 3 }, + "2.43.1": { "status": "VALUE", "value": 3 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.41.11-SNAPSHOT": "recorded", + "2.42.7-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.40.12": "recorded", + "2.41.10": "recorded", + "2.42.6": "recorded", + "2.43.1": "recorded" + } + }, + { + "id": "nest-FinancialApril__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G2_FinancialApril", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialApril"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.40.12": { "status": "EMPTY", "value": null }, + "2.41.10": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "nest-FinancialAug__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G2_FinancialAug", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialAug"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "nest-FinancialSep__q-Yearly__p-2024__A", + "item": { + "code": "PTT_G2_FinancialSep", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["FinancialSep"] + }, + "query": { + "periodType": "Yearly", + "period": "2024", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, + "2.42.6": { "status": "EMPTY", "value": null }, + "2.43.1": { "status": "EMPTY", "value": null } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "nest-WeeklyFriday__q-Monthly__p-202401__A", + "item": { + "code": "PTT_G2_WeeklyFriday", + "dimensionItemType": "DATA_ELEMENT", + "aggregationType": "SUM", + "valueType": "INTEGER", + "collectionPeriodTypes": ["WeeklyFriday"] + }, + "query": { + "periodType": "Monthly", + "period": "202401", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, + "2.43.1": { "status": "VALUE", "value": 5 } + }, + "verdict": { + "2.44-SNAPSHOT": "recorded", + "2.43.3-SNAPSHOT": "recorded", + "2.43.1": "recorded" + } + } + ] +} diff --git a/src/__fixtures__/period-types/reporting-rates.json b/src/__fixtures__/period-types/reporting-rates.json new file mode 100644 index 000000000..69f608541 --- /dev/null +++ b/src/__fixtures__/period-types/reporting-rates.json @@ -0,0 +1,1236 @@ +{ + "schemaVersion": 1, + "group": "reporting-rates", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-01" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-01" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-01" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-01" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-01" + } + ], + "smoke": "36 of 2070 cases, one per pattern", + "cases": [ + { + "id": "rate-ACTUAL_REPORTS-Daily__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 59 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.40.12": { "status": "VALUE", "value": 59 }, + "2.41.10": { "status": "VALUE", "value": 59 }, + "2.42.6": { "status": "VALUE", "value": 59 }, + "2.43.1": { "status": "VALUE", "value": 59 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Daily__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Daily__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 213 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 213 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 213 }, + "2.43.1": { "status": "VALUE", "value": 213 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Daily__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 244 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 244 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 244 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 244 }, + "2.42.6": { "status": "VALUE", "value": 244 }, + "2.43.1": { "status": "VALUE", "value": 244 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 92 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 92 }, + "2.42.6": { "status": "VALUE", "value": 92 }, + "2.43.1": { "status": "VALUE", "value": 92 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Quarterly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklySaturday", + "period": "2024SatW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-ACTUAL_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "ACTUAL_REPORTS", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Daily__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 59 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, + "2.40.12": { "status": "VALUE", "value": 59 }, + "2.41.10": { "status": "VALUE", "value": 59 }, + "2.42.6": { "status": "VALUE", "value": 59 }, + "2.43.1": { "status": "VALUE", "value": 59 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Daily__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 1 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, + "2.40.12": { "status": "VALUE", "value": 1 }, + "2.41.10": { "status": "VALUE", "value": 1 }, + "2.42.6": { "status": "VALUE", "value": 1 }, + "2.43.1": { "status": "VALUE", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Daily__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 366 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.1": { "status": "VALUE", "value": 366 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Daily__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 366 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, + "2.42.6": { "status": "VALUE", "value": 366 }, + "2.43.1": { "status": "VALUE", "value": 366 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 92 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 92 }, + "2.42.6": { "status": "VALUE", "value": 92 }, + "2.43.1": { "status": "VALUE", "value": 92 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Quarterly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklySaturday", + "period": "2024SatW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.40.12": { "status": "REPEATED", "value": 1 }, + "2.41.10": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, + "2.42.6": { "status": "REPEATED", "value": 1 }, + "2.43.1": { "status": "REPEATED", "value": 1 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-EXPECTED_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "EXPECTED_REPORTS", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Daily__q-BiMonthly__p-202501B__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "BiMonthly", + "period": "202501B", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 100 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.40.12": { "status": "VALUE", "value": 100 }, + "2.41.10": { "status": "VALUE", "value": 100 }, + "2.42.6": { "status": "VALUE", "value": 100 }, + "2.43.1": { "status": "VALUE", "value": 100 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-REPORTING_RATE-Daily__q-Daily__p-20250101__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "Daily", + "period": "20250101", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 100 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.40.12": { "status": "VALUE", "value": 100 }, + "2.41.10": { "status": "VALUE", "value": 100 }, + "2.42.6": { "status": "VALUE", "value": 100 }, + "2.43.1": { "status": "VALUE", "value": 100 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "pass", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-REPORTING_RATE-Daily__q-FinancialAug__p-2023Aug__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialAug", + "period": "2023Aug", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 58.19672131147541 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 58.19672131147541 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 58.19672131147541 + }, + "2.43.1": { "status": "VALUE", "value": 58.19672131147541 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-REPORTING_RATE-Daily__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 66.66666666666666 }, + "observed": { + "2.44-SNAPSHOT": { + "status": "VALUE", + "value": 66.66666666666667 + }, + "2.42.7-SNAPSHOT": { + "status": "VALUE", + "value": 66.66666666666667 + }, + "2.43.3-SNAPSHOT": { + "status": "VALUE", + "value": 66.66666666666667 + }, + "2.42.6": { "status": "VALUE", "value": 66.66666666666667 }, + "2.43.1": { "status": "VALUE", "value": 66.66666666666667 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-REPORTING_RATE-Daily__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Daily", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Daily"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "VALUE", "value": 100 }, + "observed": { + "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "VALUE", "value": 100 }, + "2.42.6": { "status": "VALUE", "value": 100 }, + "2.43.1": { "status": "VALUE", "value": 100 } + }, + "verdict": { + "2.44-SNAPSHOT": "pass", + "2.41.11-SNAPSHOT": "pass", + "2.42.7-SNAPSHOT": "pass", + "2.43.3-SNAPSHOT": "pass", + "2.40.12": "fail", + "2.41.10": "pass", + "2.42.6": "pass", + "2.43.1": "pass" + } + }, + { + "id": "rate-REPORTING_RATE-Monthly__q-BiWeekly__p-2025BiW1__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "BiWeekly", + "period": "2025BiW1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Monthly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Monthly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Monthly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Quarterly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Quarterly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Weekly__q-WeeklyFriday__p-2024FriW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklyFriday", + "period": "2024FriW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Weekly__q-WeeklySaturday__p-2024SatW53__A", + "item": { + "code": "PTT_G5_DS_Weekly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Weekly"] + }, + "query": { + "periodType": "WeeklySaturday", + "period": "2024SatW53", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { "status": "REPEATED", "value": 0 }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Yearly__q-FinancialSep__p-2023Sep__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "FinancialSep", + "period": "2023Sep", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + }, + { + "id": "rate-REPORTING_RATE-Yearly__q-QuarterlyNov__p-2025NovQ1__A", + "item": { + "code": "PTT_G5_DS_Yearly", + "dimensionItemType": "REPORTING_RATE", + "metric": "REPORTING_RATE", + "collectionPeriodTypes": ["Yearly"] + }, + "query": { + "periodType": "QuarterlyNov", + "period": "2025NovQ1", + "orgUnit": "A" + }, + "expected": { "status": "EMPTY", "value": null }, + "observed": { + "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, + "2.40.12": { + "status": "ERROR", + "value": null, + "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" + }, + "2.41.10": { "status": "REPEATED", "value": 0 }, + "2.42.6": { "status": "REPEATED", "value": 0 }, + "2.43.1": { "status": "REPEATED", "value": 0 } + }, + "verdict": { + "2.44-SNAPSHOT": "fail", + "2.41.11-SNAPSHOT": "fail", + "2.42.7-SNAPSHOT": "fail", + "2.43.3-SNAPSHOT": "fail", + "2.40.12": "fail", + "2.41.10": "fail", + "2.42.6": "fail", + "2.43.1": "fail" + } + } + ] +} diff --git a/src/api/__tests__/dataItemProfile.spec.js b/src/api/__tests__/dataItemProfile.spec.js new file mode 100644 index 000000000..f97992795 --- /dev/null +++ b/src/api/__tests__/dataItemProfile.spec.js @@ -0,0 +1,378 @@ +import metadataShapes from '../../__fixtures__/period-types/metadata-shapes.json' +import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' +import { + dataItemProfileMetadataQueries, + fetchDataItemProfileMetadata, + normalizeDataItemProfileMetadata, +} from '../dataItemProfile.js' + +// The metadata responses the test tool recorded on every version +const getResponses = ({ requests }) => + Object.fromEntries(requests.map(({ name, response }) => [name, response])) + +const getRecordedFields = ({ path }) => + new URLSearchParams(path.split('?')[1]).get('fields') + +// The top-level fields of a field list: `a,b[c,d]` gives a and b[c,d] +const splitFields = (fields) => { + const result = [] + let depth = 0 + let current = '' + + for (const character of fields) { + if (character === ',' && depth === 0) { + result.push(current) + current = '' + } else { + depth += { '[': 1, ']': -1 }[character] ?? 0 + current += character + } + } + + return [...result, current] +} + +/* Fields the test tool's export doesn't record yet: their shape on each + * version is unchecked until it does */ +const NOT_RECORDED = ['aggregationLevels'] + +describe('normalizeDataItemProfileMetadata', () => { + describe.each(Object.entries(metadataShapes.versions))( + 'the responses of %s', + (_, shapes) => { + const responses = getResponses(shapes) + const metadata = normalizeDataItemProfileMetadata(responses) + const idOfCode = (code) => + responses.dataElements.dataElements.find( + (dataElement) => dataElement.code === code + ).id + + it('give each data element its aggregation type and data sets', () => { + Object.values(metadata.dataElements).forEach((dataElement) => { + expect(typeof dataElement.aggregationType).toBe('string') + dataElement.dataSets.forEach((dataSet) => { + expect(typeof dataSet.id).toBe('string') + expect(typeof dataSet.periodType).toBe('string') + }) + }) + }) + + it('keep one data set per period type, and none for an element in no data set', () => { + expect( + metadata.dataElements[idOfCode('PTT_G3_MW')].dataSets + .map(({ periodType }) => periodType) + .sort() + ).toEqual(['Weekly', 'WeeklyWednesday']) + expect( + metadata.dataElements[idOfCode('PTT_G3_ORPHAN')].dataSets + ).toEqual([]) + }) + + it('give each indicator its expressions', () => { + Object.values(metadata.indicators).forEach((indicator) => { + expect(typeof indicator.numerator).toBe('string') + expect(typeof indicator.denominator).toBe('string') + }) + }) + + it('give each data set its period type', () => { + Object.values(metadata.dataSets).forEach((dataSet) => { + expect(typeof dataSet.periodType).toBe('string') + }) + }) + + it('give each expression dimension item its expression', () => { + Object.values(metadata.expressionDimensionItems).forEach( + (item) => expect(typeof item.expression).toBe('string') + ) + }) + + it('were recorded with every field the library asks for', () => { + shapes.requests.forEach((request) => { + const recorded = splitFields(getRecordedFields(request)) + const asked = splitFields( + dataItemProfileMetadataQueries[request.name].params({ + ids: [], + }).fields + ).filter((field) => !NOT_RECORDED.includes(field)) + + expect(recorded).toEqual(expect.arrayContaining(asked)) + }) + }) + } + ) + + it('keeps the aggregation levels of a data element that has some', () => { + const { dataElements } = normalizeDataItemProfileMetadata({ + dataElements: [ + { id: 'capped', aggregationLevels: [2] }, + { id: 'free', aggregationLevels: [] }, + ], + }) + + expect(dataElements.capped.aggregationLevels).toEqual([2]) + expect(dataElements.free).not.toHaveProperty('aggregationLevels') + }) + + it('accepts lists, period types as objects and missing fields', () => { + expect( + normalizeDataItemProfileMetadata({ + dataElements: [ + { + id: 'a', + aggregationType: 'SUM', + dataSetElements: [ + { + dataSet: { + id: 'w1', + periodType: { name: 'Weekly' }, + }, + }, + { dataSet: { id: 'w1', periodType: 'Weekly' } }, + { dataSet: { id: 'w2', periodType: 'Weekly' } }, + { dataSet: {} }, + {}, + ], + }, + { id: 'b', aggregationType: 'SUM' }, + ], + dataSets: { gist: true, dataSets: [{ id: 'ds' }] }, + }) + ).toEqual({ + dataElements: { + a: { + aggregationType: 'SUM', + valueType: undefined, + domainType: undefined, + dataSets: [ + { id: 'w1', periodType: 'Weekly' }, + { id: 'w2', periodType: 'Weekly' }, + ], + }, + b: { + aggregationType: 'SUM', + valueType: undefined, + domainType: undefined, + dataSets: [], + }, + }, + dataSets: { ds: { periodType: undefined } }, + indicators: {}, + expressionDimensionItems: {}, + programIndicators: {}, + programs: {}, + }) + }) +}) + +describe('fetchDataItemProfileMetadata', () => { + const server = { + dataElements: { + deA: { + aggregationType: 'SUM', + dataSetElements: [{ dataSet: { periodType: 'Monthly' } }], + }, + dePop: { + aggregationType: 'AVERAGE', + dataSetElements: [{ dataSet: { periodType: 'Yearly' } }], + }, + }, + dataSets: { dsA: { periodType: 'Weekly' } }, + indicators: { + coverage: { numerator: '#{deA.coc}', denominator: '#{dePop}' }, + outer: { + numerator: 'N{coverage} + R{dsA.REPORTING_RATE}', + denominator: 'N{outer}', + }, + }, + expressionDimensionItems: { + edi: { expression: '#{deA} + I{pi} + D{prB.de}' }, + }, + programIndicators: { + pi: { program: { id: 'prA' } }, + piByRegist: { + program: { id: 'prA' }, + orgUnitField: 'REGISTRATION', + }, + }, + programs: { + prA: { programType: 'WITH_REGISTRATION' }, + prB: { programType: 'WITHOUT_REGISTRATION' }, + }, + } + + const createEngine = (objects = server) => ({ + query: jest.fn(async (query, { variables: { ids } }) => { + const [resource] = Object.keys(query) + + return { + [resource]: { + [resource]: ids + .filter((id) => objects[resource][id]) + .map((id) => ({ id, ...objects[resource][id] })), + }, + } + }), + }) + + // Without the org unit level counts, which have their own test + const fetchMetadata = (engine, items) => + fetchDataItemProfileMetadata(engine, items, { orgUnitLevels: false }) + + const requestsOf = (engine) => + engine.query.mock.calls.map(([query, { variables }]) => [ + Object.keys(query)[0], + variables.ids, + ]) + + it('fetches operands round by round, each object once', async () => { + const engine = createEngine() + const metadata = await fetchMetadata(engine, [ + { id: 'outer', dimensionItemType: 'INDICATOR' }, + { id: 'edi', dimensionItemType: 'EXPRESSION_DIMENSION_ITEM' }, + { id: 'pi', dimensionItemType: 'PROGRAM_INDICATOR' }, + ]) + + expect(requestsOf(engine)).toEqual([ + ['indicators', ['outer']], + ['expressionDimensionItems', ['edi']], + ['programIndicators', ['pi']], + ['dataElements', ['deA']], + ['indicators', ['coverage']], + ['dataSets', ['dsA']], + ['programs', ['prB', 'prA']], + ['dataElements', ['dePop']], + ]) + expect( + getDataItemProfile( + { id: 'outer', dimensionItemType: 'INDICATOR' }, + metadata + ) + ).toMatchObject({ + unknown: false, + period: { + types: ['Weekly', 'Monthly', 'Yearly'], + finest: 'Yearly', + mixed: true, + }, + }) + }) + + it('reads where a program indicator places its values', async () => { + const metadata = await fetchMetadata(createEngine(), [ + { id: 'pi', dimensionItemType: 'PROGRAM_INDICATOR' }, + { id: 'piByRegist', dimensionItemType: 'PROGRAM_INDICATOR' }, + ]) + + expect(metadata.programIndicators).toEqual({ + pi: { program: 'prA' }, + piByRegist: { program: 'prA', orgUnitField: 'REGISTRATION' }, + }) + }) + + it('reads data elements, operands and reporting rates by their object', async () => { + const engine = createEngine() + + await fetchMetadata(engine, [ + { id: 'deA', dimensionItemType: 'DATA_ELEMENT' }, + { id: 'dePop.coc', dimensionItemType: 'DATA_ELEMENT_OPERAND' }, + { id: 'dsA.REPORTING_RATE', dimensionItemType: 'REPORTING_RATE' }, + ]) + + expect(requestsOf(engine)).toEqual([ + ['dataElements', ['deA', 'dePop']], + ['dataSets', ['dsA']], + ]) + }) + + it('sends nothing without items that need metadata', async () => { + const engine = createEngine() + + expect(await fetchMetadata(engine)).toEqual( + normalizeDataItemProfileMetadata() + ) + expect(engine.query).not.toHaveBeenCalled() + }) + + it('stops after 10 rounds of nested indicators', async () => { + const chain = Object.fromEntries( + Array.from({ length: 20 }, (_, i) => [ + `i${i}`, + { numerator: `N{i${i + 1}}`, denominator: '1' }, + ]) + ) + const engine = createEngine({ ...server, indicators: chain }) + + await fetchMetadata(engine, [ + { id: 'i0', dimensionItemType: 'INDICATOR' }, + ]) + + expect(engine.query).toHaveBeenCalledTimes(10) + }) + + it('fails when a request fails', async () => { + const engine = { + query: jest.fn().mockRejectedValue(new Error('offline')), + } + + await expect( + fetchDataItemProfileMetadata(engine, [ + { id: 'deA', dimensionItemType: 'DATA_ELEMENT' }, + ]) + ).rejects.toThrow('offline') + }) + + it('counts the units each data set is assigned to per level, by default', async () => { + const metadataEngine = createEngine() + const engine = { + query: jest.fn(async (query, options) => { + if (query.levels) { + return { + levels: { + organisationUnitLevels: [ + { id: 'levelTwo222', level: 2 }, + { id: 'levelOne111', level: 1 }, + ], + }, + } + } + + const counts = Object.entries(query).filter(([key]) => + key.startsWith('count') + ) + + return counts.length + ? Object.fromEntries( + counts.map(([key, { params }]) => [ + key, + { + pager: { + total: params.filter.includes( + 'level:eq:2' + ) + ? 5 + : 0, + }, + }, + ]) + ) + : metadataEngine.query(query, options) + }), + } + const metadata = await fetchDataItemProfileMetadata(engine, [ + { id: 'dsA.REPORTING_RATE', dimensionItemType: 'REPORTING_RATE' }, + ]) + + expect(metadata.orgUnitLevels.map(({ level }) => level)).toEqual([1, 2]) + expect(metadata.dataSetOrgUnitLevels).toMatchObject({ dsA: { 2: 5 } }) + expect( + getDataItemProfile( + { + id: 'dsA.REPORTING_RATE', + dimensionItemType: 'REPORTING_RATE', + }, + metadata + ).orgUnit + ).toEqual({ levels: [2], entryLevel: 2, mixed: false }) + }) +}) diff --git a/src/api/__tests__/orgUnitCoverage.spec.js b/src/api/__tests__/orgUnitCoverage.spec.js new file mode 100644 index 000000000..77cc76dde --- /dev/null +++ b/src/api/__tests__/orgUnitCoverage.spec.js @@ -0,0 +1,293 @@ +import { + fetchSourceOrgUnitLevels, + fetchOrgUnitCoverage, + getProfilesSources, +} from '../orgUnitCoverage.js' + +/* A nation with 2 districts and 3 facilities. formMonth: 2 of the 3 + * facilities, and the nation. formQuart: the districts. eventProgra: the 3 + * facilities. clinicGroup: facilityAAA and facilityCCC. mixedGroupA: + * districtBBB and facilityAAA. */ +const GROUPS = { + clinicGroup: ['facilityAAA', 'facilityCCC'], + mixedGroupA: ['districtBBB', 'facilityAAA'], +} + +const UNITS = [ + ['nationUnit1', 1, '/nationUnit1', ['formMonth']], + ['districtAAA', 2, '/nationUnit1/districtAAA', ['formQuart']], + ['districtBBB', 2, '/nationUnit1/districtBBB', ['formQuart']], + ['facilityAAA', 3, '/nationUnit1/districtAAA/facilityAAA', ['formMonth']], + ['facilityBBB', 3, '/nationUnit1/districtAAA/facilityBBB', ['formMonth']], + ['facilityCCC', 3, '/nationUnit1/districtBBB/facilityCCC', []], +].map(([id, level, path, dataSets]) => ({ + id, + level, + path, + dataSets, + programs: level === 3 ? ['eventProgra'] : [], +})) + +const parentOf = ({ path }) => + UNITS.find(({ id }) => id === path.split('/').at(-2)) +const childrenOf = (unit) => UNITS.filter((other) => parentOf(other) === unit) + +// organisationUnitGroups.id, behind parent. and children. steps +const isInGroup = (unit, field, group) => { + const steps = field.split('.').slice(0, -2) + const related = steps.reduce( + (units, step) => + units.flatMap((one) => + step === 'parent' + ? [parentOf(one)].filter(Boolean) + : childrenOf(one) + ), + [unit] + ) + + return related.some(({ id }) => GROUPS[group].includes(id)) +} + +const FILTERS = { + in: (unit, field, value) => + value.slice(1, -1).split(',').includes(unit[field]), + eq: (unit, field, value) => + field.endsWith('organisationUnitGroups.id') + ? isInGroup(unit, field, value) + : ['dataSets.id', 'programs.id'].includes(field) + ? unit[field.split('.')[0]].includes(value) + : String(unit[field]) === value, + like: (unit, field, value) => unit[field].includes(value), +} + +const applyFilters = (filter) => + [filter].flat().reduce((units, condition) => { + const [field, operator, ...rest] = condition.split(':') + + return units.filter((unit) => + FILTERS[operator](unit, field, rest.join(':')) + ) + }, UNITS) + +const answer = ({ resource, params }) => { + if (resource === 'organisationUnitLevels') { + return { + organisationUnitLevels: [3, 1, 2].map((level) => ({ + id: `level${level}`, + level, + displayName: `Level ${level}`, + })), + } + } + + if (resource === 'me') { + return { + organisationUnits: [UNITS[0]], + dataViewOrganisationUnits: [UNITS[1]], + } + } + + const units = applyFilters(params.filter) + + return params.pageSize === 1 + ? { + pager: { total: units.length }, + organisationUnits: units.slice(0, 1), + } + : { organisationUnits: units } +} + +const createEngine = () => ({ + query: jest.fn(async (query) => + Object.fromEntries( + Object.entries(query).map(([key, request]) => [ + key, + answer(request), + ]) + ) + ), +}) + +const dataSets = (...ids) => ids.map((id) => ({ id, field: 'dataSets' })) + +const fetchFor = (orgUnits, sources = dataSets('formMonth', 'formQuart')) => + fetchOrgUnitCoverage(createEngine(), { sources, orgUnits }) + +describe('fetchOrgUnitCoverage', () => { + it('counts the units and assignments under a unit, per level', async () => { + const coverage = await fetchFor(['districtAAA']) + + expect(coverage.levels.map(({ level }) => level)).toEqual([1, 2, 3]) + expect(coverage.units.districtAAA).toEqual({ + id: 'districtAAA', + level: 2, + path: '/nationUnit1/districtAAA', + name: undefined, + }) + expect(coverage.assignedLevels).toEqual({ + formMonth: { 1: 1, 3: 2 }, + formQuart: { 2: 2 }, + }) + expect(coverage.counts.districtAAA).toEqual({ + totals: { 2: 1, 3: 2 }, + sources: { + formMonth: { byLevel: { 3: 2 }, ancestors: 1 }, + formQuart: { byLevel: { 2: 1 }, ancestors: 0 }, + }, + }) + expect(coverage).toMatchObject({ roots: [], userUnits: null }) + }) + + it('counts only the levels a data set is assigned at', async () => { + const coverage = await fetchFor(['nationUnit1'], dataSets('formQuart')) + + expect(coverage.counts.nationUnit1).toEqual({ + totals: { 2: 2 }, + sources: { formQuart: { byLevel: { 2: 2 }, ancestors: 0 } }, + }) + expect(coverage.requests).toBe(3 + 2) + }) + + it('reuses the level counts it is given', async () => { + const engine = createEngine() + const coverage = await fetchOrgUnitCoverage(engine, { + sources: dataSets('formQuart'), + orgUnits: ['nationUnit1'], + assignedLevels: { formQuart: { 2: 2 } }, + }) + + expect(coverage.assignedLevels).toEqual({ formQuart: { 2: 2 } }) + expect(coverage.requests).toBe(2) + }) + + it('loads the roots for a level alone', async () => { + const coverage = await fetchFor(['LEVEL-3']) + + expect(coverage.roots).toEqual(['nationUnit1']) + expect(coverage.counts.nationUnit1.totals).toEqual({ 1: 1, 2: 2, 3: 3 }) + }) + + it('loads the user units, from the data view ones first', async () => { + const coverage = await fetchFor(['USER_ORGUNIT_CHILDREN']) + + expect(coverage.userUnits).toEqual(['districtAAA']) + }) + + it('falls back to the user data capture units', async () => { + const engine = createEngine() + const query = engine.query + + engine.query = jest.fn(async (request) => { + const response = await query(request) + + return response.me + ? { ...response, me: { organisationUnits: [UNITS[0]] } } + : response + }) + + const coverage = await fetchOrgUnitCoverage(engine, { + sources: [], + orgUnits: ['USER_ORGUNIT'], + }) + + expect(coverage.userUnits).toEqual(['nationUnit1']) + expect(coverage.counts).toEqual({}) + }) + + it('counts a group per level its members are at', async () => { + const coverage = await fetchFor(['OU_GROUP-mixedGroupA']) + + expect(coverage.groups).toEqual({ mixedGroupA: { 2: 1, 3: 1 } }) + expect(coverage.roots).toEqual([]) + expect(coverage.counts).toEqual({ + 'mixedGroupA:2:': { + totals: { 2: 1, 3: 1 }, + sources: { + formMonth: { byLevel: { 3: 0 }, ancestors: 1 }, + formQuart: { byLevel: { 2: 1 }, ancestors: 0 }, + }, + }, + 'mixedGroupA:3:': { + totals: { 3: 1 }, + sources: { + formMonth: { byLevel: { 3: 1 }, ancestors: 1 }, + formQuart: { byLevel: {}, ancestors: 1 }, + }, + }, + }) + }) + + it('counts a group within each boundary at or above its members', async () => { + const coverage = await fetchFor( + ['districtAAA', 'facilityCCC', 'OU_GROUP-clinicGroup'], + dataSets('formMonth') + ) + + expect(coverage.counts['clinicGroup:3:districtAAA']).toEqual({ + totals: { 3: 1 }, + sources: { formMonth: { byLevel: { 3: 1 }, ancestors: 1 } }, + }) + expect(coverage.counts['clinicGroup:3:facilityCCC']).toEqual({ + totals: { 3: 1 }, + sources: { formMonth: { byLevel: { 3: 0 }, ancestors: 1 } }, + }) + }) + + it('sends no count without units or data sets', async () => { + expect(await fetchOrgUnitCoverage(createEngine(), {})).toMatchObject({ + units: {}, + counts: {}, + requests: 0, + }) + }) +}) + +describe('getProfilesSources', () => { + it('lists the data sets and programs behind profiles, once each', () => { + expect( + getProfilesSources([ + { + sources: [ + { dataSet: { id: 'formA' } }, + { dataSet: null }, + { dataSet: null, program: { id: 'programA' } }, + { + dataSet: null, + program: { id: 'programB' }, + orgUnitField: 'REGISTRATION', + }, + ], + }, + { sources: [{ dataSet: { id: 'formA' } }] }, + undefined, + ]) + ).toEqual([ + { id: 'formA', field: 'dataSets' }, + { id: 'programA', field: 'programs' }, + ]) + expect(getProfilesSources()).toEqual([]) + }) +}) + +describe('fetchSourceOrgUnitLevels', () => { + it('fetches the levels, then counts each source per level', async () => { + const result = await fetchSourceOrgUnitLevels(createEngine(), [ + ...dataSets('formMonth', 'formNone'), + { id: 'eventProgra', field: 'programs' }, + ]) + + expect(result).toEqual({ + levels: [ + { id: 'level1', level: 1, name: 'Level 1' }, + { id: 'level2', level: 2, name: 'Level 2' }, + { id: 'level3', level: 3, name: 'Level 3' }, + ], + assignedLevels: { + formMonth: { 1: 1, 3: 2 }, + formNone: {}, + eventProgra: { 3: 3 }, + }, + requests: 9, + }) + }) +}) diff --git a/src/api/dataItemProfile.js b/src/api/dataItemProfile.js new file mode 100644 index 000000000..eb5609f2e --- /dev/null +++ b/src/api/dataItemProfile.js @@ -0,0 +1,300 @@ +import { + OPERAND_DATA_ELEMENT, + OPERAND_INDICATOR, + OPERAND_PROGRAM_ATTRIBUTE, + OPERAND_PROGRAM_DATA_ELEMENT, + OPERAND_PROGRAM_INDICATOR, + OPERAND_REPORTING_RATE, + getExpressionItems, +} from '../modules/dataItemProfile/expressionItems.js' +import { DIMENSION_TYPE_REPORTING_RATE } from '../modules/dataItemProfile/getDataItemProfile.js' +import { + DIMENSION_TYPE_DATA_ELEMENT, + DIMENSION_TYPE_DATA_ELEMENT_OPERAND, + DIMENSION_TYPE_EVENT_DATA_ITEM, + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, + DIMENSION_TYPE_INDICATOR, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, + DIMENSION_TYPE_PROGRAM_INDICATOR, +} from '../modules/dataTypes.js' +import { fetchSourceOrgUnitLevels } from './orgUnitCoverage.js' + +const byIds = (fields) => ({ + params: ({ ids }) => ({ + fields, + filter: `id:in:[${ids.join(',')}]`, + paging: false, + }), +}) + +export const dataItemProfileMetadataQueries = { + dataElements: { + resource: 'dataElements', + ...byIds( + 'id,aggregationType,aggregationLevels,valueType,domainType,dataSetElements[dataSet[id,periodType]]' + ), + }, + indicators: { + resource: 'indicators', + ...byIds('id,numerator,denominator,annualized'), + }, + dataSets: { + resource: 'dataSets', + ...byIds('id,periodType'), + }, + expressionDimensionItems: { + resource: 'expressionDimensionItems', + ...byIds('id,expression'), + }, + programIndicators: { + resource: 'programIndicators', + ...byIds('id,program[id],orgUnitField'), + }, + programs: { + resource: 'programs', + ...byIds('id,programType'), + }, +} + +const RESOURCES = Object.keys(dataItemProfileMetadataQueries) + +// A period type comes as a name, or as an object on some versions +const getPeriodTypeName = (periodType) => + typeof periodType === 'string' ? periodType : periodType?.name + +const getList = (response, resource) => + Array.isArray(response) ? response : response?.[resource] ?? [] + +// By id, or by period type when a version sends no id +const getDataSetKey = ({ id, periodType }) => id ?? periodType + +const uniqueDataSets = (dataSets) => + dataSets.filter( + (dataSet, i) => + dataSets.findIndex( + (other) => getDataSetKey(other) === getDataSetKey(dataSet) + ) === i + ) + +const normalizers = { + dataElements: ({ + aggregationType, + aggregationLevels, + valueType, + domainType, + dataSetElements, + }) => ({ + aggregationType, + ...(aggregationLevels?.length && { aggregationLevels }), + valueType, + domainType, + dataSets: uniqueDataSets( + (dataSetElements ?? []) + .map(({ dataSet }) => dataSet) + .filter((dataSet) => dataSet?.periodType) + .map(({ id, periodType }) => ({ + id, + periodType: getPeriodTypeName(periodType), + })) + ), + }), + indicators: ({ numerator, denominator, annualized }) => ({ + numerator, + denominator, + annualized, + }), + dataSets: ({ periodType }) => ({ + periodType: getPeriodTypeName(periodType), + }), + expressionDimensionItems: ({ expression }) => ({ expression }), + programIndicators: ({ program, orgUnitField }) => ({ + program: program?.id, + ...(orgUnitField && { orgUnitField }), + }), + programs: ({ programType }) => ({ programType }), +} + +/** + * The lookups getDataItemProfile reads, from the responses of + * dataItemProfileMetadataQueries. Accepts a gist response and period types as + * objects. + */ +export const normalizeDataItemProfileMetadata = (responses = {}) => + Object.fromEntries( + RESOURCES.map((resource) => [ + resource, + Object.fromEntries( + getList(responses[resource], resource).map((object) => [ + object.id, + normalizers[resource](object), + ]) + ), + ]) + ) + +const createPending = () => + Object.fromEntries(RESOURCES.map((resource) => [resource, new Set()])) + +// The program of program.element or program.attribute, if the id names one +const addPrefixedProgram = (pending, id) => { + if (id.includes('.')) { + pending.programs.add(id.split('.')[0]) + } +} + +const addItem = (pending, { id, dimensionItemType }) => { + switch (dimensionItemType) { + case DIMENSION_TYPE_DATA_ELEMENT: + case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: + pending.dataElements.add(id.split('.')[0]) + break + case DIMENSION_TYPE_REPORTING_RATE: + pending.dataSets.add(id.split('.')[0]) + break + case DIMENSION_TYPE_INDICATOR: + pending.indicators.add(id) + break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + pending.expressionDimensionItems.add(id) + break + case DIMENSION_TYPE_PROGRAM_INDICATOR: + pending.programIndicators.add(id) + break + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION: + case DIMENSION_TYPE_EVENT_DATA_ITEM: + addPrefixedProgram(pending, id) + break + default: + // Other items need no metadata + } +} + +const OPERAND_RESOURCE = { + [OPERAND_DATA_ELEMENT]: 'dataElements', + [OPERAND_REPORTING_RATE]: 'dataSets', + [OPERAND_INDICATOR]: 'indicators', + [OPERAND_PROGRAM_INDICATOR]: 'programIndicators', +} + +const PROGRAM_PREFIXED_OPERANDS = [ + OPERAND_PROGRAM_DATA_ELEMENT, + OPERAND_PROGRAM_ATTRIBUTE, +] + +const addOperands = (pending, expression) => + getExpressionItems(expression).forEach(({ type, id }) => { + const resource = OPERAND_RESOURCE[type] + + if (resource) { + pending[resource].add(id) + } else if (PROGRAM_PREFIXED_OPERANDS.includes(type)) { + addPrefixedProgram(pending, id) + } + }) + +const mergeMetadata = (metadata, fetched) => + Object.fromEntries( + RESOURCES.map((resource) => [ + resource, + { ...metadata[resource], ...fetched[resource] }, + ]) + ) + +// Indicators can nest (N{}), so operands are fetched round by round +const MAX_ROUNDS = 10 + +// The data sets behind the metadata: of its data elements, and read as reporting rates +// The data sets and programs behind the metadata, as sources to count +const getSources = (metadata) => [ + ...[ + ...new Set([ + ...Object.values(metadata.dataElements).flatMap(({ dataSets }) => + dataSets.map(({ id }) => id).filter(Boolean) + ), + ...Object.keys(metadata.dataSets), + ]), + ].map((id) => ({ id, field: 'dataSets' })), + ...Object.keys(metadata.programs).map((id) => ({ id, field: 'programs' })), +] + +/** + * Fetches the metadata getDataItemProfile needs for `items` + * ({ id, dimensionItemType }): data elements, data sets, indicators and their + * operands, nested indicators, expression dimension items, program + * indicators and programs. By default it + * also counts each data set's assigned units per level + * (fetchSourceOrgUnitLevels: one count per data set or program and level), for the + * profile's org unit side; `{ orgUnitLevels: false }` leaves them out. + */ +export const fetchDataItemProfileMetadata = async ( + dataEngine, + items = [], + { orgUnitLevels = true } = {} +) => { + let metadata = normalizeDataItemProfileMetadata() + const requested = createPending() + let pending = createPending() + + items.forEach((item) => addItem(pending, item)) + + for (let round = 0; round < MAX_ROUNDS; round++) { + const toFetch = RESOURCES.map((resource) => [ + resource, + [...pending[resource]].filter((id) => !requested[resource].has(id)), + ]).filter(([, ids]) => ids.length) + + if (!toFetch.length) { + break + } + + const responses = await Promise.all( + toFetch.map(([resource, ids]) => { + ids.forEach((id) => requested[resource].add(id)) + + return dataEngine.query( + { [resource]: dataItemProfileMetadataQueries[resource] }, + { variables: { ids } } + ) + }) + ) + const fetched = normalizeDataItemProfileMetadata( + Object.assign({}, ...responses) + ) + + metadata = mergeMetadata(metadata, fetched) + pending = createPending() + Object.values(fetched.indicators).forEach( + ({ numerator, denominator }) => { + addOperands(pending, numerator) + addOperands(pending, denominator) + } + ) + Object.values(fetched.expressionDimensionItems).forEach( + ({ expression }) => addOperands(pending, expression) + ) + Object.values(fetched.programIndicators).forEach( + ({ program }) => program && pending.programs.add(program) + ) + } + + if (!orgUnitLevels) { + return metadata + } + + const { levels, assignedLevels } = await fetchSourceOrgUnitLevels( + dataEngine, + getSources(metadata) + ) + + return { + ...metadata, + orgUnitLevels: levels, + dataSetOrgUnitLevels: assignedLevels, + } +} diff --git a/src/api/orgUnitCoverage.js b/src/api/orgUnitCoverage.js new file mode 100644 index 000000000..e1854d8ed --- /dev/null +++ b/src/api/orgUnitCoverage.js @@ -0,0 +1,266 @@ +import { + getUnitsToCount, + readOrgUnitSelection, +} from '../modules/dataItemProfile/orgUnitSelection.js' +import { + getSourceField, + getSourceId, + isPlacedAnywhere, +} from '../modules/dataItemProfile/sources.js' +import { fetchGroupLevels, getGroupCountQueries } from './orgUnitGroupCounts.js' +import { assignedTo, countQuery, getTotal, queryAll } from './orgUnitQueries.js' + +const UNIT_FIELDS = 'id,level,path,displayName' + +const unitsQuery = (filter) => ({ + resource: 'organisationUnits', + params: { filter, fields: UNIT_FIELDS, paging: false }, +}) + +const byId = (units = []) => + Object.fromEntries( + units.map(({ id, level, path, displayName }) => [ + id, + { id, level, path, name: displayName }, + ]) + ) + +const getAncestorIds = ({ id, path }) => + path.split('/').filter((ancestorId) => ancestorId && ancestorId !== id) + +/** + * The data sets and programs behind profiles (getDataItemProfile results), + * whose assignment fetchOrgUnitCoverage counts: `[{ id, field }]`, `field` + * being the org unit field that lists them (dataSets or programs). + */ +export const getProfilesSources = (profiles = []) => [ + ...new Map( + profiles + .flatMap((profile) => profile?.sources ?? []) + .filter( + (source) => getSourceId(source) && !isPlacedAnywhere(source) + ) + .map((source) => [ + getSourceId(source), + { id: getSourceId(source), field: getSourceField(source) }, + ]) + ).values(), +] + +// The units, roots and user's units a selection needs, with the levels +const fetchUnits = async (engine, orgUnits) => { + const { unitIds, needsRoots, needsUser } = getUnitsToCount(orgUnits) + const response = await engine.query({ + ...levelsQuery, + ...(unitIds.length && { + units: unitsQuery(`id:in:[${unitIds.join(',')}]`), + }), + ...(needsRoots && { roots: unitsQuery('level:eq:1') }), + ...(needsUser && { + me: { + resource: 'me', + params: { + fields: `organisationUnits[${UNIT_FIELDS}],dataViewOrganisationUnits[${UNIT_FIELDS}]`, + }, + }, + }), + }) + // Analytics reads the user's data view units when there are some + const userUnits = response.me?.dataViewOrganisationUnits?.length + ? response.me.dataViewOrganisationUnits + : response.me?.organisationUnits + const levels = readLevels(response) + + return { + levels, + units: { + ...byId(response.units?.organisationUnits), + ...byId(response.roots?.organisationUnits), + ...byId(userUnits), + }, + roots: needsRoots + ? (response.roots?.organisationUnits ?? []).map(({ id }) => id) + : [], + userUnits: needsUser ? (userUnits ?? []).map(({ id }) => id) : null, + } +} + +// Each source's assigned units per level, across the whole hierarchy +const getAssignedLevelQueries = (sources, levels) => + sources.flatMap((source) => + levels.map(({ level }) => [ + [source.id, level], + countQuery([`level:eq:${level}`, assignedTo(source)]), + ]) + ) + +const readAssignedLevels = (sources, queries, response) => { + const bySource = Object.fromEntries(sources.map(({ id }) => [id, {}])) + + queries.forEach(([[sourceId, level]], i) => { + const byLevel = bySource[sourceId] + const total = getTotal(response[`count${i}`]) + + if (total) { + byLevel[level] = total + } + }) + + return bySource +} + +const levelsQuery = { + levels: { + resource: 'organisationUnitLevels', + params: { fields: 'id,level,displayName', paging: false }, + }, +} + +const readLevels = (response) => + (response?.levels?.organisationUnitLevels ?? []) + .map(({ id, level, displayName }) => ({ id, level, name: displayName })) + .sort((a, b) => a.level - b.level) + +/** + * Each source's assigned units per level, across the hierarchy, as counts + * (pageSize=1): where its data is entered. `sources` are `[{ id, field }]` + * (getProfilesSources), `levels` are fetched when not given. Gives + * `{ levels, assignedLevels: { [sourceId]: { [level]: count } }, requests }`; + * getDataItemProfile reads `assignedLevels` for the profile's org unit side. + */ +export const fetchSourceOrgUnitLevels = async (engine, sources, levels) => { + const knownLevels = levels ?? readLevels(await engine.query(levelsQuery)) + const queries = getAssignedLevelQueries(sources, knownLevels) + + return { + levels: knownLevels, + assignedLevels: readAssignedLevels( + sources, + queries, + await queryAll(engine, queries) + ), + requests: queries.length, + } +} + +/* For each unit: how many units each level under it has, how many of them + * each source is assigned to, and how many of its ancestors. Only levels a + * source is assigned at somewhere are counted. */ +const getCountQueries = (units, sources, assignedLevels) => + Object.values(units).flatMap((unit) => { + const under = `path:like:${unit.id}` + const ancestorIds = getAncestorIds(unit) + const levelsOf = ({ id }) => + Object.keys(assignedLevels[id] ?? {}) + .map(Number) + .filter((level) => level >= unit.level) + const isAssignedAbove = ({ id }) => + Object.keys(assignedLevels[id] ?? {}).some( + (level) => Number(level) < unit.level + ) + const totalLevels = [...new Set(sources.flatMap(levelsOf))] + + return [ + ...totalLevels.map((level) => [ + [unit.id, 'total', level], + countQuery([under, `level:eq:${level}`]), + ]), + ...sources.flatMap((source) => [ + ...levelsOf(source).map((level) => [ + [unit.id, source.id, level], + countQuery([ + under, + `level:eq:${level}`, + assignedTo(source), + ]), + ]), + ...(ancestorIds.length && isAssignedAbove(source) + ? [ + [ + [unit.id, source.id, 'ancestors'], + countQuery([ + `id:in:[${ancestorIds.join(',')}]`, + assignedTo(source), + ]), + ], + ] + : []), + ]), + ] + }) + +const readCounts = (queries, response) => { + const counts = {} + + queries.forEach(([[unitId, what, level]], i) => { + const unit = + counts[unitId] || (counts[unitId] = { totals: {}, sources: {} }) + const total = getTotal(response[`count${i}`]) + + if (what === 'total') { + unit.totals[level] = total + return + } + + const source = + unit.sources[what] || + (unit.sources[what] = { byLevel: {}, ancestors: 0 }) + + if (level === 'ancestors') { + source.ancestors += total + } else { + source.byLevel[level] = total + } + }) + + return counts +} + +/** + * Where data sets and programs (`sources`, getProfilesSources) are assigned, + * under the units of an org unit selection (DV's org unit items): the + * levels, the units (boundaries, roots for a level alone, the user's units), + * each group's members per level (`groups`), each source's `assignedLevels` + * across the hierarchy, and for each unit (and group, by getGroupCountsKey), per + * level below it that a source is assigned at, the number of units and of + * units each source is assigned to, plus its ancestors each one is assigned + * to. Only counts are fetched + * (pageSize=1), so large hierarchies cost the same; each round of requests + * goes out together. getDataItemOrgUnitCompatibility reads the result. + */ +export const fetchOrgUnitCoverage = async ( + engine, + { sources = [], orgUnits = [], assignedLevels: known = {} } +) => { + const { levels, units, roots, userUnits } = await fetchUnits( + engine, + orgUnits + ) + const missing = sources.filter(({ id }) => !known[id]) + const [counted, grouped] = await Promise.all([ + fetchSourceOrgUnitLevels(engine, missing, levels), + fetchGroupLevels(engine, getUnitsToCount(orgUnits).groupIds, levels), + ]) + const assignedLevels = { ...known, ...counted.assignedLevels } + const queries = [ + ...getCountQueries(units, sources, assignedLevels), + ...getGroupCountQueries({ + groups: grouped.groups, + boundaries: readOrgUnitSelection(orgUnits).boundaries, + units, + sources, + assignedLevels, + }), + ] + + return { + levels, + units, + roots, + userUnits, + groups: grouped.groups, + assignedLevels, + counts: readCounts(queries, await queryAll(engine, queries)), + requests: counted.requests + grouped.requests + queries.length, + } +} diff --git a/src/api/orgUnitGroupCounts.js b/src/api/orgUnitGroupCounts.js new file mode 100644 index 000000000..03b96bf8b --- /dev/null +++ b/src/api/orgUnitGroupCounts.js @@ -0,0 +1,114 @@ +import { getGroupCountsKey } from '../modules/dataItemProfile/orgUnitSelection.js' +import { assignedTo, countQuery, getTotal, queryAll } from './orgUnitQueries.js' + +const inGroup = (group) => `organisationUnitGroups.id:eq:${group}` + +/* Units `depth` levels under a group's members (parent.parent…), or above + * them (children.children…) */ +const underMembers = (group, depth) => 'parent.'.repeat(depth) + inGroup(group) +const aboveMembers = (group, height) => + 'children.'.repeat(height) + inGroup(group) + +/** + * Each group's members per level, as counts: `{ [group]: { [level]: count } }`. + */ +export const fetchGroupLevels = async (engine, groupIds, levels) => { + const queries = groupIds.flatMap((group) => + levels.map(({ level }) => [ + [group, level], + countQuery([inGroup(group), `level:eq:${level}`]), + ]) + ) + const response = await queryAll(engine, queries) + const groups = Object.fromEntries(groupIds.map((group) => [group, {}])) + + queries.forEach(([[group, level]], i) => { + const total = getTotal(response[`count${i}`]) + + if (total) { + groups[group][level] = total + } + }) + + return { groups, requests: queries.length } +} + +/* For each group, level its members are at, and boundary (or none), the same + * counts as for a unit: the units at each level under the members (the + * members' level included, to know whether any lie in the boundary), those + * each source is assigned to, and the units above the members each source is + * assigned to (above any member: the filter can't keep them to the + * boundary, and they only tell BELOW_COLLECTION from NOT_ASSIGNED). */ +export const getGroupCountQueries = ({ + groups, + boundaries, + units, + sources, + assignedLevels, +}) => + Object.entries(groups).flatMap(([group, memberLevels]) => + Object.keys(memberLevels) + .map(Number) + .flatMap((memberLevel) => + (boundaries.length ? boundaries : [null]) + .filter( + (unitId) => + !unitId || + (units[unitId] && + units[unitId].level <= memberLevel) + ) + .flatMap((unitId) => { + const key = getGroupCountsKey( + group, + memberLevel, + unitId + ) + const within = unitId ? [`path:like:${unitId}`] : [] + const levelsOf = ({ id }) => + Object.keys(assignedLevels[id] ?? {}).map(Number) + const under = (level) => [ + ...within, + underMembers(group, level - memberLevel), + `level:eq:${level}`, + ] + const totalLevels = [ + ...new Set([ + memberLevel, + ...sources + .flatMap(levelsOf) + .filter((level) => level >= memberLevel), + ]), + ] + + return [ + ...totalLevels.map((level) => [ + [key, 'total', level], + countQuery(under(level)), + ]), + ...sources.flatMap((source) => + levelsOf(source).map((level) => + level >= memberLevel + ? [ + [key, source.id, level], + countQuery([ + ...under(level), + assignedTo(source), + ]), + ] + : [ + [key, source.id, 'ancestors'], + countQuery([ + aboveMembers( + group, + memberLevel - level + ), + `level:eq:${level}`, + assignedTo(source), + ]), + ] + ) + ), + ] + }) + ) + ) diff --git a/src/api/orgUnitQueries.js b/src/api/orgUnitQueries.js new file mode 100644 index 000000000..6a9119226 --- /dev/null +++ b/src/api/orgUnitQueries.js @@ -0,0 +1,20 @@ +// A count with no list: pageSize=1 gives the total in the pager +export const countQuery = (filter) => ({ + resource: 'organisationUnits', + params: { filter, fields: 'id', pageSize: 1 }, +}) + +export const getTotal = (response) => response?.pager?.total ?? 0 + +// The filter on units a data set or program is assigned to +export const assignedTo = ({ id, field }) => `${field}.id:eq:${id}` + +// Queries as [key, query] pairs, sent together; the response is keyed count +export const queryAll = (engine, queries) => + queries.length + ? engine.query( + Object.fromEntries( + queries.map(([, query], i) => [`count${i}`, query]) + ) + ) + : {} diff --git a/src/components/DataItemProfile/__tests__/hooks.spec.js b/src/components/DataItemProfile/__tests__/hooks.spec.js new file mode 100644 index 000000000..069d044ad --- /dev/null +++ b/src/components/DataItemProfile/__tests__/hooks.spec.js @@ -0,0 +1,408 @@ +import { CustomDataProvider } from '@dhis2/app-runtime' +import { act, renderHook, waitFor } from '@testing-library/react' +import PropTypes from 'prop-types' +import React from 'react' +import { useDataItemProfiles } from '../useDataItemProfiles.js' + +let mockConfig = { systemInfo: {} } + +jest.mock('@dhis2/app-runtime', () => ({ + ...jest.requireActual('@dhis2/app-runtime'), + useConfig: () => mockConfig, +})) + +afterEach(() => { + mockConfig = { systemInfo: {} } +}) + +const OBJECTS = { + dataElements: { + monthly: { + aggregationType: 'SUM', + dataSetElements: [{ dataSet: { periodType: 'Monthly' } }], + }, + weekly: { + aggregationType: 'SUM', + dataSetElements: [{ dataSet: { periodType: 'Weekly' } }], + }, + population: { + aggregationType: 'AVERAGE', + // An object, as some versions send it + dataSetElements: [{ dataSet: { periodType: { name: 'Yearly' } } }], + }, + assigned: { + aggregationType: 'SUM', + dataSetElements: [ + { dataSet: { id: 'formAAAAAAA', periodType: 'Monthly' } }, + ], + }, + }, + indicators: { + coverage: { numerator: '#{monthly}', denominator: '#{population}' }, + }, + dataSets: {}, + expressionDimensionItems: {}, +} + +const byIdFilter = (resource) => + jest.fn((type, { params }) => { + const ids = params.filter.match(/\[(.*)\]/)[1].split(',') + + return { + // A gist response, as 2.44 sends for some fields + gist: true, + [resource]: ids + .filter((id) => OBJECTS[resource][id]) + .map((id) => ({ id, ...OBJECTS[resource][id] })), + } + }) + +const createData = (overrides = {}) => ({ + dataElements: byIdFilter('dataElements'), + indicators: byIdFilter('indicators'), + dataSets: byIdFilter('dataSets'), + expressionDimensionItems: byIdFilter('expressionDimensionItems'), + 'systemSettings/analyticsWeeklyStart': { + analyticsWeeklyStart: 'WEEKLY', + }, + 'systemSettings/analyticsFinancialYearStart': { + analyticsFinancialYearStart: 'FINANCIAL_YEAR_OCTOBER', + }, + organisationUnitLevels: { + organisationUnitLevels: [{ id: 'levelOne111', level: 1 }], + }, + // Counts with pageSize=1 (3 units, 2 of them with filters on a data set) + organisationUnits: (type, { params }) => + params.pageSize === 1 + ? { pager: { total: params.filter.length === 3 ? 2 : 3 } } + : { + organisationUnits: [ + { id: 'nationUnit1', level: 1, path: '/nationUnit1' }, + ], + }, + ...overrides, +}) + +const createWrapper = (data) => { + const Wrapper = ({ children }) => ( + {children} + ) + Wrapper.propTypes = { children: PropTypes.node } + + return Wrapper +} + +const MONTHLY = { id: 'monthly', dimensionItemType: 'DATA_ELEMENT' } +const WEEKLY = { id: 'weekly', dimensionItemType: 'DATA_ELEMENT' } +const COVERAGE = { id: 'coverage', dimensionItemType: 'INDICATOR' } + +describe('useDataItemProfiles', () => { + const renderProfiles = (items, data = createData(), options) => + renderHook((props) => useDataItemProfiles(props, options), { + initialProps: items, + wrapper: createWrapper(data), + }) + + it('loads the profile of each item', async () => { + const { result } = renderProfiles([MONTHLY, COVERAGE]) + + expect(result.current.loading).toBe(true) + + await waitFor(() => expect(result.current.loading).toBe(false)) + + expect(result.current.error).toBeUndefined() + expect(result.current.profiles.monthly).toMatchObject({ + unknown: false, + period: { finest: 'Monthly' }, + }) + expect(result.current.profiles.coverage).toMatchObject({ + period: { + types: ['Monthly', 'Yearly'], + finest: 'Yearly', + mixed: true, + }, + }) + }) + + it('checks periods, with the settings for relative periods', async () => { + const { result } = renderProfiles([WEEKLY]) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect(result.current.relativePeriodTypes).toEqual({ + weeklyPeriodType: 'Weekly', + financialYearPeriodType: 'FinancialOct', + }) + expect( + result.current.getDataItemCompatibility('weekly', { + periods: ['LAST_4_WEEKS', '202501'], + }) + ).toMatchObject({ + status: 'full', + periods: [ + { status: 'full', alignsWithData: null }, + { status: 'full', alignsWithData: false }, + ], + }) + expect( + result.current.getDataItemCompatibility('weekly', { + periods: ['20250115'], + }).status + ).toBe('none') + expect( + result.current.getDataItemCompatibility('other', { + periods: ['202501'], + }) + ).toBe(undefined) + }) + + it('judges org units from where data sets are assigned', async () => { + const organisationUnits = jest.fn((type, { params }) => + params.pageSize === 1 + ? { pager: { total: params.filter.length === 3 ? 2 : 3 } } + : { + organisationUnits: [ + { id: 'nationUnit1', level: 1, path: '/nationUnit1' }, + ], + } + ) + const { result } = renderProfiles( + [{ id: 'assigned', dimensionItemType: 'DATA_ELEMENT' }], + createData({ + organisationUnits, + organisationUnitLevels: { + organisationUnitLevels: [{ id: 'levelOne111', level: 1 }], + }, + }), + { orgUnits: ['nationUnit1'] } + ) + + await waitFor(() => + expect(result.current.orgUnitCoverage).toBeDefined() + ) + + expect( + result.current.getDataItemCompatibility('assigned', { + orgUnits: ['nationUnit1'], + }).orgUnits + ).toEqual([ + { + id: 'nationUnit1', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 2, total: 3, level: 1 }, + }, + ]) + expect(result.current.loading).toBe(false) + }) + + it('gives profiles their org unit side, or from the coverage when told not to', async () => { + const assigned = [{ id: 'assigned', dimensionItemType: 'DATA_ELEMENT' }] + const byDefault = renderProfiles(assigned) + + await waitFor(() => + expect(byDefault.result.current.profiles).toBeDefined() + ) + + expect(byDefault.result.current.profiles.assigned.orgUnit).toEqual({ + levels: [1], + entryLevel: 1, + mixed: false, + }) + + const skipped = renderProfiles(assigned, createData(), { + orgUnitLevels: false, + }) + + await waitFor(() => + expect(skipped.result.current.profiles).toBeDefined() + ) + + expect(skipped.result.current.profiles.assigned.orgUnit).toBeUndefined() + + const filledLater = renderProfiles(assigned, createData(), { + orgUnitLevels: false, + orgUnits: ['nationUnit1'], + }) + + await waitFor(() => + expect(filledLater.result.current.orgUnitCoverage).toBeDefined() + ) + + expect(filledLater.result.current.profiles.assigned.orgUnit).toEqual({ + levels: [1], + entryLevel: 1, + mixed: false, + }) + }) + + it('gives the error of a failed org unit request', async () => { + const { result } = renderProfiles( + [{ id: 'assigned', dimensionItemType: 'DATA_ELEMENT' }], + createData({ + organisationUnits: { organisationUnits: [] }, + organisationUnitLevels: () => + Promise.reject(new Error('no levels')), + }), + { orgUnits: ['nationUnit1'] } + ) + + await waitFor(() => expect(result.current.error).toBeDefined()) + + expect(result.current.error.message).toBe('no levels') + expect(result.current.orgUnitCoverage).toBeUndefined() + }) + + it('is unknown for relative weeks on a version without the setting', async () => { + const data = createData() + delete data['systemSettings/analyticsWeeklyStart'] + const { result } = renderProfiles([WEEKLY], data) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect(result.current.relativePeriodTypes.weeklyPeriodType).toBe( + undefined + ) + expect( + result.current.getDataItemCompatibility('weekly', { + periods: ['LAST_4_WEEKS'], + }).status + ).toBe('unknown') + }) + + it('is unknown for an item the server does not have', async () => { + const { result } = renderProfiles([ + { id: 'gone', dimensionItemType: 'DATA_ELEMENT' }, + ]) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect(result.current.profiles.gone).toMatchObject({ + unknown: true, + reasons: [{ code: 'MISSING_METADATA', id: 'gone' }], + }) + expect( + result.current.getDataItemCompatibility('gone', { + periods: ['202501'], + }).status + ).toBe('unknown') + }) + + it('gives the error of a failed request', async () => { + const { result } = renderProfiles( + [MONTHLY], + createData({ + dataElements: () => Promise.reject(new Error('offline')), + }) + ) + + await waitFor(() => expect(result.current.loading).toBe(false)) + + expect(result.current.error.message).toBe('offline') + expect(result.current.profiles).toBeUndefined() + }) + + it('sends nothing without items', () => { + const data = createData() + const { result } = renderProfiles([], data) + + expect(result.current).toMatchObject({ + loading: false, + profiles: undefined, + }) + expect(data.dataElements).not.toHaveBeenCalled() + }) + + it('sends nothing again for the same items in a new array', async () => { + const data = createData() + const { result, rerender } = renderProfiles([MONTHLY], data) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + rerender([{ ...MONTHLY }]) + + expect(result.current.loading).toBe(false) + expect(data.dataElements).toHaveBeenCalledTimes(1) + }) + + it('loads again when the items change, and drops a stale answer', async () => { + const { result, rerender } = renderProfiles([MONTHLY]) + + rerender([WEEKLY]) + + await waitFor(() => + expect(result.current.profiles?.weekly).toBeDefined() + ) + + expect(result.current.profiles.monthly).toBeUndefined() + }) + + it('ignores a failure that came after the items changed', async () => { + let rejectFirst + const data = createData({ + dataElements: jest + .fn() + .mockImplementationOnce( + () => + new Promise((_, reject) => { + rejectFirst = reject + }) + ) + .mockImplementation(byIdFilter('dataElements')), + }) + const { result, rerender } = renderProfiles([MONTHLY], data) + + await waitFor(() => expect(rejectFirst).toBeDefined()) + rerender([WEEKLY]) + await waitFor(() => + expect(result.current.profiles?.weekly).toBeDefined() + ) + await act(async () => rejectFirst(new Error('late'))) + + expect(result.current.error).toBeUndefined() + }) + + it('passes the server version: 2.40 has no QuarterlyNov', async () => { + mockConfig = { systemInfo: {}, serverVersion: { major: 2, minor: 40 } } + const { result } = renderProfiles([MONTHLY]) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect( + result.current.getDataItemCompatibility('monthly', { + periods: ['2025NovQ1'], + }).status + ).toBe('unknown') + expect( + result.current.getDataItemCompatibility('monthly', { + periods: ['2025Q1'], + }).status + ).toBe('full') + }) + + it('uses the system calendar', async () => { + mockConfig = { systemInfo: { calendar: 'nepali' } } + const { result } = renderProfiles([MONTHLY]) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect( + result.current.getDataItemCompatibility('monthly', { + periods: ['2081Q1'], + }).periods[0].alignsWithData + ).toBe(true) + }) + + it('uses the calendar it is given', async () => { + const { result } = renderProfiles([MONTHLY], createData(), { + calendar: 'nepali', + }) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + expect( + result.current.getDataItemCompatibility('monthly', { + periods: ['2081Q1'], + }).periods[0].alignsWithData + ).toBe(true) + }) +}) diff --git a/src/components/DataItemProfile/useDataItemProfiles.js b/src/components/DataItemProfile/useDataItemProfiles.js new file mode 100644 index 000000000..773a2aa2d --- /dev/null +++ b/src/components/DataItemProfile/useDataItemProfiles.js @@ -0,0 +1,202 @@ +import { useConfig } from '@dhis2/app-runtime' +import { useCallback, useEffect, useMemo, useState } from 'react' +import { fetchDataItemProfileMetadata } from '../../api/dataItemProfile.js' +import { + fetchOrgUnitCoverage, + getProfilesSources, +} from '../../api/orgUnitCoverage.js' +import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' +import { getDataItemProfileCompatibility } from '../../modules/dataItemProfile/getDataItemProfileCompatibility.js' +import { withOrgUnitSide } from '../../modules/dataItemProfile/orgUnitSide.js' +import { + fetchRelativePeriodTypeOptions, + getItemsKey, + parseItemsKey, + useCalendar, + useEngineRef, +} from './utils.js' + +/** + * The profiles of data items, and whether a selection suits them + * (capabilities 1 and 2). + * + * `items` are { id, dimensionItemType }, as in a visualization's dx items. + * Each profile has its org unit side (the levels its data sets are assigned + * at) unless `orgUnitLevels: false`; then it gets it once `orgUnits` are + * given and their coverage is loaded. + * `profiles` are keyed by item id. `getDataItemCompatibility(itemId, + * { periods })` runs getDataItemProfileCompatibility on the item's profile, + * with the server's settings for relative weeks and financial years, its + * calendar and its version; it gives undefined for an item not loaded. + * + * With `orgUnits` (DV's org unit items), it also loads where the items' data + * sets are assigned under them (fetchOrgUnitCoverage, `orgUnitCoverage`), so + * `getDataItemCompatibility(itemId, { periods, orgUnits })` judges org units + * too: any selection whose units it loaded, such as a level under one of + * them. + */ +export const useDataItemProfiles = ( + items, + { calendar, orgUnits, orgUnitLevels = true } = {} +) => { + const engineRef = useEngineRef() + const itemsKey = getItemsKey(items) + const resolvedCalendar = useCalendar(calendar) + const { serverVersion } = useConfig() + const [state, setState] = useState({ + loading: false, + error: undefined, + metadata: undefined, + options: {}, + }) + const [coverageState, setCoverageState] = useState({ + loading: false, + error: undefined, + coverage: undefined, + }) + const orgUnitsKey = JSON.stringify(orgUnits ?? []) + + useEffect(() => { + const engine = engineRef.current + const requestedItems = parseItemsKey(itemsKey) + let cancelled = false + + if (!requestedItems.length) { + setState({ loading: false, metadata: undefined, options: {} }) + return undefined + } + + setState((previous) => ({ + ...previous, + loading: true, + error: undefined, + })) + + Promise.all([ + fetchDataItemProfileMetadata(engine, requestedItems, { + orgUnitLevels, + }), + fetchRelativePeriodTypeOptions(engine), + ]) + .then(([metadata, options]) => { + if (!cancelled) { + setState({ loading: false, metadata, options }) + } + }) + .catch((error) => { + if (!cancelled) { + setState({ loading: false, error, options: {} }) + } + }) + + return () => { + cancelled = true + } + }, [engineRef, itemsKey, orgUnitLevels]) + + const metadataProfiles = useMemo( + () => + state.metadata && + Object.fromEntries( + parseItemsKey(itemsKey).map((item) => [ + item.id, + getDataItemProfile(item, state.metadata), + ]) + ), + [itemsKey, state.metadata] + ) + + const sourcesKey = JSON.stringify( + metadataProfiles + ? getProfilesSources(Object.values(metadataProfiles)) + : null + ) + const knownAssignedLevels = state.metadata?.dataSetOrgUnitLevels + + useEffect(() => { + const engine = engineRef.current + const sources = JSON.parse(sourcesKey) + const requestedOrgUnits = JSON.parse(orgUnitsKey) + let cancelled = false + + if (!sources || !requestedOrgUnits.length) { + setCoverageState({ loading: false, coverage: undefined }) + return undefined + } + + setCoverageState((previous) => ({ + ...previous, + loading: true, + error: undefined, + })) + + fetchOrgUnitCoverage(engine, { + sources, + orgUnits: requestedOrgUnits, + assignedLevels: knownAssignedLevels, + }) + .then((coverage) => { + if (!cancelled) { + setCoverageState({ loading: false, coverage }) + } + }) + .catch((error) => { + if (!cancelled) { + setCoverageState({ loading: false, error }) + } + }) + + return () => { + cancelled = true + } + }, [engineRef, sourcesKey, orgUnitsKey, knownAssignedLevels]) + + // Without the counts in the metadata, the coverage gives the org unit side + const profiles = useMemo( + () => + metadataProfiles && + Object.fromEntries( + Object.entries(metadataProfiles).map(([id, profile]) => [ + id, + profile.orgUnit || !coverageState.coverage + ? profile + : withOrgUnitSide( + profile, + coverageState.coverage.assignedLevels + ), + ]) + ), + [metadataProfiles, coverageState.coverage] + ) + + const options = useMemo( + () => ({ + ...state.options, + calendar: resolvedCalendar, + serverVersion, + orgUnitCoverage: coverageState.coverage, + }), + [state.options, resolvedCalendar, serverVersion, coverageState.coverage] + ) + + const getDataItemCompatibility = useCallback( + (itemId, selection) => + profiles?.[itemId] + ? getDataItemProfileCompatibility( + profiles[itemId], + selection, + options + ) + : undefined, + [profiles, options] + ) + + return { + loading: state.loading || coverageState.loading, + error: state.error ?? coverageState.error, + profiles, + orgUnitCoverage: coverageState.coverage, + relativePeriodTypes: state.options, + getDataItemCompatibility, + } +} diff --git a/src/components/DataItemProfile/utils.js b/src/components/DataItemProfile/utils.js new file mode 100644 index 000000000..2259e03c5 --- /dev/null +++ b/src/components/DataItemProfile/utils.js @@ -0,0 +1,55 @@ +import { useConfig, useDataEngine } from '@dhis2/app-runtime' +import { useRef } from 'react' +import { getRelativePeriodTypeOptions } from '../../modules/dataItemProfile/periodTypes.js' + +const SETTING_KEYS = ['analyticsWeeklyStart', 'analyticsFinancialYearStart'] + +// A setting a version doesn't have is left out, never guessed +const fetchSetting = (engine, key) => + engine + .query({ setting: { resource: `systemSettings/${key}` } }) + .then(({ setting }) => setting?.[key]) + .catch(() => undefined) + +export const fetchRelativePeriodTypeOptions = async (engine) => { + const values = await Promise.all( + SETTING_KEYS.map((key) => fetchSetting(engine, key)) + ) + + return getRelativePeriodTypeOptions( + Object.fromEntries(SETTING_KEYS.map((key, i) => [key, values[i]])) + ) +} + +export const useCalendar = (calendar) => { + const { systemInfo } = useConfig() + + return calendar ?? systemInfo?.calendar ?? 'gregory' +} + +// Items are compared by value, so a new array with the same items sends no request +export const getItemsKey = (items = []) => + JSON.stringify( + items.map((item) => + typeof item === 'string' + ? [item] + : [item.id, item.dimensionItemType] + ) + ) + +export const parseItemsKey = (itemsKey) => + JSON.parse(itemsKey).map(([id, dimensionItemType]) => ({ + id, + dimensionItemType, + })) + +/* The latest engine, without making requests depend on its identity: a test + * provider can give a new one on each render */ +export const useEngineRef = () => { + const engine = useDataEngine() + const engineRef = useRef(engine) + + engineRef.current = engine + + return engineRef +} diff --git a/src/index.js b/src/index.js index 976210f68..b1156646c 100644 --- a/src/index.js +++ b/src/index.js @@ -7,6 +7,8 @@ export { default as PeriodDimension } from './components/PeriodDimension/PeriodD export { default as FixedPeriodSelect } from './components/PeriodDimension/FixedPeriodSelect.js' export { useDataOutputPeriodTypes } from './components/PeriodDimension/useDataOutputPeriodTypes.js' +export { useDataItemProfiles } from './components/DataItemProfile/useDataItemProfiles.js' + export { default as OrgUnitDimension } from './components/OrgUnitDimension/OrgUnitDimension.js' export { @@ -330,6 +332,53 @@ export { export { renderValue as formatValue } from './modules/renderValue.js' +// Modules: dataItemProfile + +export { + getDataItemProfile, + getPeriodAggregationType, +} from './modules/dataItemProfile/getDataItemProfile.js' +export { + getDataItemProfileCompatibility, + COMPATIBILITY_FULL, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_NONE, + COMPATIBILITY_UNKNOWN, + REASON_AVERAGED, + REASON_CARRIED, + REASON_SHORTER, + REASON_OTHER_TYPE, + REASON_REPORTING_RATE, + REASON_NOTHING_TO_CARRY, + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, + REASON_PROFILE_UNKNOWN, + REASON_UNKNOWN_PERIOD, + REASON_SETTING_MISSING, + REASON_UNSUPPORTED_VERSION, +} from './modules/dataItemProfile/getDataItemProfileCompatibility.js' +export { + aggregatesInto, + getPeriodRelation, + widenToWholePeriods, +} from './modules/dataItemProfile/periodTypeRelations.js' +export { + getDataItemOrgUnitCompatibility, + REASON_NOT_ASSIGNED, + REASON_BELOW_COLLECTION, + REASON_AGGREGATION_LEVEL, + REASON_PARTLY_ASSIGNED, + REASON_ORG_UNIT_FIELD, + REASON_UNKNOWN_ORG_UNIT, + REASON_EVENT_DATA, +} from './modules/dataItemProfile/getDataItemOrgUnitCompatibility.js' +export { fetchDataItemProfileMetadata } from './api/dataItemProfile.js' +export { + fetchOrgUnitCoverage, + fetchSourceOrgUnitLevels, +} from './api/orgUnitCoverage.js' +export { withOrgUnitSide } from './modules/dataItemProfile/orgUnitSide.js' + // Modules: response export { transformResponse as transformEventAggregateResponse } from './modules/response/event/response.js' diff --git a/src/modules/dataItemProfile/__tests__/carriedValues.spec.js b/src/modules/dataItemProfile/__tests__/carriedValues.spec.js new file mode 100644 index 000000000..b95cc3e49 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/carriedValues.spec.js @@ -0,0 +1,158 @@ +import { getCarriedSource, getYearsTouched } from '../carriedValues.js' +import { getPeriodDates } from '../periodTypeRelations.js' + +const sourceOf = ({ + periodAggregationType = 'LAST', + periodType, + period, + years, + calendar, +}) => { + const dates = getPeriodDates(period, calendar) + + return getCarriedSource({ + periodAggregationType, + periodType, + dates, + years: years ?? getYearsTouched(dates), + calendar, + }) +} + +describe('getYearsTouched', () => { + it('lists the calendar years a period falls in', () => { + expect(getYearsTouched(getPeriodDates('2025W1'))).toEqual([2024, 2025]) + expect(getYearsTouched(getPeriodDates('2025WedW1'))).toEqual([2025]) + expect(getYearsTouched(getPeriodDates('2024April'))).toEqual([ + 2024, 2025, + ]) + }) +}) + +describe('getCarriedSource', () => { + describe('LAST', () => { + it('takes the latest data period that ended by the end of the period', () => { + expect( + sourceOf({ periodType: 'Monthly', period: '20250715' }) + ).toMatchObject({ id: '202506' }) + expect( + sourceOf({ periodType: 'Monthly', period: '2025Q3' }) + ).toMatchObject({ id: '202509' }) + }) + + it('counts only data periods of the years touched, by their id', () => { + expect( + sourceOf({ periodType: 'Monthly', period: '20250101' }) + ).toBeNull() + // 2025W1 starts in 2024, so December 2024 counts + expect( + sourceOf({ periodType: 'Monthly', period: '2025W1' }) + ).toMatchObject({ id: '202412' }) + // 2025Nov (November 2024 to October 2025) is a 2025 period + expect( + sourceOf({ periodType: 'FinancialNov', period: '20251101' }) + ).toMatchObject({ startDate: '2024-11-01' }) + }) + + it('skips years the request does not touch', () => { + expect( + sourceOf({ + periodType: 'Monthly', + period: '20250715', + years: [2023, 2025], + }) + ).toMatchObject({ id: '202506' }) + // 2024 isn't touched: December 2023 is the latest that counts + expect( + sourceOf({ + periodType: 'Monthly', + period: '20250101', + years: [2023, 2025], + }) + ).toMatchObject({ id: '202312' }) + expect( + sourceOf({ + periodType: 'Monthly', + period: '20250101', + years: [2026], + }) + ).toBeNull() + }) + }) + + describe('FIRST', () => { + it('takes the earliest data period of the years touched', () => { + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'Monthly', + period: '202507', + }) + ).toMatchObject({ id: '202501' }) + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'Daily', + period: '20250715', + years: [2024, 2025], + }) + ).toMatchObject({ id: '20240101' }) + }) + + it('needs that period to end by the end of the period asked for', () => { + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'Monthly', + period: '20250101', + }) + ).toBeNull() + }) + + it('starts from the first period whose id names the year', () => { + // 2024April holds 1 January 2025, but is a 2024 period + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'FinancialApril', + period: '2025April', + years: [2025, 2026], + }) + ).toMatchObject({ id: '2025April' }) + }) + }) + + it('is null without years, or for a type without dates', () => { + expect( + sourceOf({ periodType: 'Monthly', period: '20250715', years: [] }) + ).toBeNull() + expect( + sourceOf({ periodType: 'TwoYearly', period: '20250715' }) + ).toBeNull() + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'TwoYearly', + period: '20250715', + }) + ).toBeNull() + }) + + it('works in other calendars', () => { + expect( + sourceOf({ + periodType: 'Monthly', + period: '20810415', + calendar: 'nepali', + }) + ).toMatchObject({ id: '208103' }) + expect( + sourceOf({ + periodAggregationType: 'FIRST', + periodType: 'Monthly', + period: '208104', + calendar: 'nepali', + }) + ).toMatchObject({ id: '208101' }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/expressionItems.spec.js b/src/modules/dataItemProfile/__tests__/expressionItems.spec.js new file mode 100644 index 000000000..d46a58d8b --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/expressionItems.spec.js @@ -0,0 +1,69 @@ +import { getExpressionItems } from '../expressionItems.js' + +const summarize = (expression) => + getExpressionItems(expression).map( + ({ type, id, operand, aggregationType }) => ({ + type, + ...(id !== undefined && { id }), + ...(operand && { operand }), + ...(aggregationType && { aggregationType }), + }) + ) + +describe('getExpressionItems', () => { + it.each([ + ['#{deA}', [{ type: 'DATA_ELEMENT', id: 'deA' }]], + [ + '#{deA.cocA}', + [{ type: 'DATA_ELEMENT', id: 'deA', operand: 'deA.cocA' }], + ], + [ + '#{deA.cocA.aocA}', + [{ type: 'DATA_ELEMENT', id: 'deA', operand: 'deA.cocA.aocA' }], + ], + ['#{deA.*}', [{ type: 'DATA_ELEMENT', id: 'deA' }]], + ['R{dsA.REPORTING_RATE}', [{ type: 'REPORTING_RATE', id: 'dsA' }]], + ['N{indA}', [{ type: 'INDICATOR', id: 'indA' }]], + ['I{piA}', [{ type: 'PROGRAM_INDICATOR', id: 'piA' }]], + ['D{prA.deA}', [{ type: 'PROGRAM_DATA_ELEMENT', id: 'prA.deA' }]], + ['A{prA.atA}', [{ type: 'PROGRAM_ATTRIBUTE', id: 'prA.atA' }]], + ['C{cA}', [{ type: 'CONSTANT', id: 'cA' }]], + ['OUG{ougA}', [{ type: 'ORG_UNIT_GROUP', id: 'ougA' }]], + ['[days]', [{ type: 'DAYS' }]], + ['S{subA}', [{ type: 'UNKNOWN', id: 'subA' }]], + ])('reads %s', (expression, expected) => { + expect(summarize(expression)).toEqual(expected) + }) + + it('reads every operand of an expression, in order', () => { + expect( + summarize( + '(#{deA.cocA} + #{deB}) * C{cA} / [days] - R{dsA.ACTUAL_REPORTS}' + ) + ).toEqual([ + { type: 'DATA_ELEMENT', id: 'deA', operand: 'deA.cocA' }, + { type: 'DATA_ELEMENT', id: 'deB' }, + { type: 'CONSTANT', id: 'cA' }, + { type: 'DAYS' }, + { type: 'REPORTING_RATE', id: 'dsA' }, + ]) + }) + + it('reads the functions chained after an operand', () => { + const [operand] = getExpressionItems( + '#{deA}.periodOffset(-1).aggregationType( LAST )' + ) + + expect(operand.functions).toEqual([ + { name: 'periodOffset', arg: '-1' }, + { name: 'aggregationType', arg: 'LAST' }, + ]) + expect(operand.aggregationType).toBe('LAST') + }) + + it('reads nothing from an empty expression', () => { + expect(getExpressionItems()).toEqual([]) + expect(getExpressionItems(null)).toEqual([]) + expect(getExpressionItems('1 + 2')).toEqual([]) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/fixtures.spec.js b/src/modules/dataItemProfile/__tests__/fixtures.spec.js new file mode 100644 index 000000000..a301dc421 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/fixtures.spec.js @@ -0,0 +1,434 @@ +import fs from 'fs' +import path from 'path' +import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' +import { getCarriedSource, getYearsTouched } from '../carriedValues.js' +import { + getDataItemProfile, + getPeriodAggregationType, +} from '../getDataItemProfile.js' +import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' +import { getPeriodDates } from '../periodTypeRelations.js' +import { getPeriodTypeOfPeriodId } from '../periodTypes.js' + +/* The fixtures come from the test tool in dhis2/maps-tools + * (test-data-period-types). PERIOD_TYPES_FIXTURES_DIR points the test at the + * tool's full export; a folder in it holds one group split in parts. */ +const FIXTURES_DIR = + process.env.PERIOD_TYPES_FIXTURES_DIR ?? + path.join(__dirname, '../../../__fixtures__/period-types') + +const readFixtures = (dir) => + fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => { + const entryPath = path.join(dir, entry.name) + + if (entry.isDirectory()) { + return readFixtures(entryPath) + } + + return entry.name.endsWith('.json') && + entry.name !== 'metadata-shapes.json' + ? [JSON.parse(fs.readFileSync(entryPath, 'utf8'))] + : [] + }) + +const LIBRARY_STATUS = { + VALUE: 'full', + REPEATED: 'full', + EMPTY: 'none', + PARTIAL: 'partial', + // Analytics refuses the query: aggregation type NONE, or QuarterlyNov on 2.40 + ERROR: 'unknown', +} + +const CARRYING = + /^(FIRST|LAST)(_AVERAGE_ORG_UNIT|_FIRST_ORG_UNIT|_LAST_ORG_UNIT)?$/ + +const getItemParts = (item) => [item, ...(item.operands ?? [])] + +const isCarrying = (item) => + getItemParts(item).some(({ aggregationType }) => + CARRYING.test(aggregationType) + ) + +const hasReportingRate = (item) => + getItemParts(item).some( + ({ dimensionItemType }) => dimensionItemType === 'REPORTING_RATE' + ) + +/* What the library should answer, as a status and the reason it must give, + * if any. The tool calls any value at a shorter period REPEATED; the library + * tells apart: + * - averaged values, repeated from the data period that holds the period: + * complete, AVERAGED; + * - the value FIRST and LAST carry from an earlier data period: complete, + * CARRIED; when nothing is carried, empty, NOTHING_TO_CARRY; + * - the meaningless value a reporting rate gives (0, or the expected reports + * count for another type of the same length): empty, REPORTING_RATE. + * FIRST also carries into periods its data adds up into (January's value for + * July), which the tool calls VALUE: any reason is accepted there. */ +const toExpected = ({ item }, { status }) => { + if (status === 'REPEATED') { + if (hasReportingRate(item)) { + return { status: 'none', reason: 'REPORTING_RATE' } + } + + return isCarrying(item) + ? { status: 'full', reason: 'CARRIED' } + : { status: 'full', reason: 'AVERAGED' } + } + + if (status === 'EMPTY' && isCarrying(item)) { + return { status: 'none', reason: 'NOTHING_TO_CARRY' } + } + + return { status: LIBRARY_STATUS[status] } +} + +const agrees = (expected, library) => + expected.status === library.status && + (!expected.reason || library.reasons.includes(expected.reason)) + +const describeExpected = ({ status, reason }) => + reason ? `${status} with ${reason}` : status + +const describeLibrary = ({ status, reasons }) => + reasons.length ? `${status} [${reasons.join(', ')}]` : status + +/* Cases the metadata can't see: the library's answer differs from what + * analytics returns, on purpose, so they are not compared. Capability 4 (the + * collected period types) is the way to find them. */ +const TEST_DATA_START = '2024-01-01' + +// The periods asked in one request: the case's, and another one in group 7 +const getRequestPeriods = ({ query }) => + [query.period, query.withPeriod].filter(Boolean) + +const isFirstOrLast = ({ aggregationType }) => + ['FIRST', 'LAST'].includes(getPeriodAggregationType(aggregationType)) + +/* The data period the library says FIRST or LAST data carries into the case's + * period, by the dates of the request's periods; null when none, undefined + * when it doesn't apply */ +const predictCarriedSource = (fixtureCase) => { + const { item, query } = fixtureCase + const requestDates = getRequestPeriods(fixtureCase).map((period) => + getPeriodDates(period) + ) + + if ( + !isFirstOrLast(item) || + (item.collectionPeriodTypes ?? []).length !== 1 || + requestDates.includes(null) + ) { + return undefined + } + + return getCarriedSource({ + periodAggregationType: getPeriodAggregationType(item.aggregationType), + periodType: item.collectionPeriodTypes[0], + dates: getPeriodDates(query.period), + years: [...new Set(requestDates.flatMap(getYearsTouched))], + }) +} + +const METADATA_BLIND_SPOTS = [ + { + pattern: /^mixed-place__.*__(A|B)$/, + reason: 'the library does not read which org units a data set is assigned to', + }, + { + pattern: /^mixed-history__.*__r-2024/, + reason: 'the metadata only shows the data sets of today', + }, + { + pattern: /^mixed-orphan__/, + reason: 'without a data set, the metadata gives no period type', + }, + { + pattern: /^ind-period-offset__/, + /* The test data starts with the periods that overlap 2024: the period + * before one that starts by then has none */ + applies: ({ query }) => + getPeriodDates(query.period)?.startDate <= TEST_DATA_START, + reason: 'periodOffset(-1) reads a period before the test data', + }, + { + pattern: /^(agg|carry-dense|carry-pair)-/, + applies: (fixtureCase) => { + const source = predictCarriedSource(fixtureCase) + + return Boolean(source) && source.endDate < TEST_DATA_START + }, + reason: 'FIRST or LAST carries a period before the test data', + }, + { + pattern: /^carry-sparse-/, + reason: 'the library does not know which periods hold data', + // Not in every subset: its patterns can all be dense ones + optional: true, + }, + { + pattern: /^carry-/, + applies: ({ query }) => + getPeriodDates(query.period)?.endDate < TEST_DATA_START, + reason: 'the period ends before the test data', + }, +] + +const isBlindSpot = (fixtureCase) => + METADATA_BLIND_SPOTS.some( + ({ pattern, applies = () => true }) => + pattern.test(fixtureCase.id) && applies(fixtureCase) + ) + +// collectionSources is optional (Addendum 1): one data set per period type otherwise +const getDataSets = ({ collectionSources, collectionPeriodTypes }) => + collectionSources + ? collectionSources.map(({ dataSet, periodType }) => ({ + id: dataSet, + periodType, + })) + : inDataSets(collectionPeriodTypes) + +// Indicator operands need the id their expression uses +const addOperands = (metadata, operands = []) => { + operands.forEach((operand) => { + if (!operand.id) { + throw new Error('an operand has no id') + } + + if (operand.dimensionItemType === 'REPORTING_RATE') { + metadata.dataSets[operand.id] = { + periodType: operand.collectionPeriodTypes[0], + } + } else if (operand.dimensionItemType === 'INDICATOR') { + metadata.indicators[operand.id] = { + numerator: operand.numerator, + denominator: operand.denominator, + } + addOperands(metadata, operand.operands) + } else { + metadata.dataElements[operand.id] = { + aggregationType: operand.aggregationType, + dataSets: getDataSets(operand), + } + } + }) +} + +const toMetadata = ({ item }) => { + const metadata = { + dataElements: {}, + dataSets: {}, + indicators: {}, + expressionDimensionItems: {}, + } + + switch (item.dimensionItemType) { + case 'REPORTING_RATE': + metadata.dataSets.ds = { periodType: item.collectionPeriodTypes[0] } + return { id: `ds.${item.metric ?? 'REPORTING_RATE'}`, metadata } + case 'INDICATOR': + metadata.indicators.item = { + numerator: item.numerator, + denominator: item.denominator, + } + addOperands(metadata, item.operands) + return { id: 'item', metadata } + case 'EXPRESSION_DIMENSION_ITEM': + metadata.expressionDimensionItems.item = { + expression: item.expression, + } + addOperands(metadata, item.operands) + return { id: 'item', metadata } + default: + metadata.dataElements.de = { + aggregationType: item.aggregationType, + valueType: item.valueType, + dataSets: getDataSets(item), + } + return { id: 'de', metadata } + } +} + +// What analytics returned on each version, or what is expected before a run +const getOutcomes = (fixtureCase) => { + const observed = Object.entries(fixtureCase.observed ?? {}) + + return observed.length ? observed : [['expected', fixtureCase.expected]] +} + +// '2.40.12' or '2.43.3-SNAPSHOT' to { major, minor } +const toServerVersion = (version) => { + const [major, minor] = version.split('.').map(Number) + + return Number.isInteger(minor) ? { major, minor } : undefined +} + +const computeLibraryAnswer = (fixtureCase, serverVersion) => { + const { id, metadata } = toMetadata(fixtureCase) + const profile = getDataItemProfile( + { id, dimensionItemType: fixtureCase.item.dimensionItemType }, + metadata + ) + const { period, periodType } = fixtureCase.query + /* `period` is a period of the query type, or the range the query type is + * asked over (the weeks of 2025Q2) */ + const asked = + getPeriodTypeOfPeriodId(period) === periodType ? period : periodType + + const { withPeriod } = fixtureCase.query + const { periods } = getDataItemProfileCompatibility( + profile, + { periods: withPeriod ? [asked, withPeriod] : [asked] }, + { serverVersion } + ) + const { status, reasons } = periods[0] + + return { status, reasons } +} + +/* The versions only differ for QuarterlyNov, which 2.40 can't answer: one + * answer for 2.40, one for the others */ +const libraryAnswers = new Map() + +const getLibraryAnswer = (fixtureCase, version) => { + const serverVersion = toServerVersion(version) + const key = `${fixtureCase.id}:${serverVersion?.minor < 41}` + + if (!libraryAnswers.has(key)) { + libraryAnswers.set( + key, + computeLibraryAnswer(fixtureCase, serverVersion) + ) + } + + return libraryAnswers.get(key) +} + +/* A case the library can't read yet: a request without a period type + * (detection requests), or operands without ids */ +const canRead = (fixtureCase) => { + try { + return ( + Boolean(fixtureCase.item?.dimensionItemType) && + Boolean(fixtureCase.query?.periodType) && + toMetadata(fixtureCase) + ) + } catch { + return false + } +} + +const describeCase = ({ item, query }) => + [ + item.dimensionItemType, + item.aggregationType ?? item.metric, + (item.collectionPeriodTypes ?? []).join('+'), + `q ${query.periodType}`, + ].join(' ') + +/* One line per pattern, not per case: the full export has hundreds of + * thousands of outcomes */ +const summarize = (mismatches) => + Object.values( + mismatches.reduce((patterns, mismatch) => { + const key = `${describeCase(mismatch.fixtureCase)}: analytics ${ + mismatch.status + } (${describeExpected( + mismatch.expected + )}), library ${describeLibrary(mismatch.library)}` + const pattern = patterns[key] ?? { key, count: 0, example: '' } + + pattern.count++ + pattern.example ||= `${mismatch.fixtureCase.id} (${mismatch.version})` + patterns[key] = pattern + + return patterns + }, {}) + ).map(({ key, count, example }) => `${count}× ${key}, e.g. ${example}`) + +const fixtures = readFixtures(FIXTURES_DIR) +const groups = [...new Set(fixtures.map(({ group }) => group))] +const allCases = fixtures.flatMap(({ cases }) => cases) + +describe('period type fixtures', () => { + it('are there', () => { + expect(allCases.length).toBeGreaterThan(0) + }) + + it('use only statuses the library maps', () => { + const statuses = allCases.flatMap((fixtureCase) => + getOutcomes(fixtureCase).map(([, { status }]) => status) + ) + + expect( + [...new Set(statuses)].filter( + (status) => !(status in LIBRARY_STATUS) + ) + ).toEqual([]) + }) + + it('list only blind spots that exist', () => { + expect( + METADATA_BLIND_SPOTS.filter( + ({ pattern, applies = () => true, optional }) => + !optional && + !allCases.some( + (fixtureCase) => + pattern.test(fixtureCase.id) && applies(fixtureCase) + ) + ).map(({ reason }) => reason) + ).toEqual([]) + }) + + /* Group 7 names the data period each value comes from. Where every period + * holds data (the dense layout), the library must pick the same one. */ + it('carry the data period analytics names', () => { + const cases = allCases.filter( + (fixtureCase) => + fixtureCase.id.startsWith('carry-') && + !isBlindSpot(fixtureCase) && + predictCarriedSource(fixtureCase) !== undefined + ) + const startOf = (period) => + period ? getPeriodDates(period)?.startDate ?? period : null + const mismatches = cases.flatMap((fixtureCase) => { + const predicted = + predictCarriedSource(fixtureCase)?.startDate ?? null + + return getOutcomes(fixtureCase) + .filter(([, { source }]) => startOf(source) !== predicted) + .map( + ([version, { source }]) => + `${fixtureCase.id} (${version}): analytics ${source}, library ${predicted}` + ) + }) + + expect(cases.length).toBeGreaterThan(0) + expect(mismatches.slice(0, 20)).toEqual([]) + }) + + it.each(groups)('%s: the library agrees with analytics', (group) => { + const cases = fixtures + .filter((fixture) => fixture.group === group) + .flatMap((fixture) => fixture.cases) + .filter( + (fixtureCase) => + canRead(fixtureCase) && !isBlindSpot(fixtureCase) + ) + const mismatches = cases.flatMap((fixtureCase) => + getOutcomes(fixtureCase) + .map(([version, outcome]) => ({ + fixtureCase, + version, + status: outcome.status, + expected: toExpected(fixtureCase, outcome), + library: getLibraryAnswer(fixtureCase, version), + })) + .filter(({ expected, library }) => !agrees(expected, library)) + ) + + expect(summarize(mismatches)).toEqual([]) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js new file mode 100644 index 000000000..b58074bc0 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js @@ -0,0 +1,473 @@ +import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' +import { getDataItemOrgUnitCompatibility } from '../getDataItemOrgUnitCompatibility.js' +import { getDataItemProfile } from '../getDataItemProfile.js' +import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' + +const METADATA = { + dataElements: { + facility: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly']), + }, + district: { + aggregationType: 'SUM', + dataSets: inDataSets(['Quarterly']), + }, + twoForms: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Weekly']), + }, + twoLevels: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Quarterly']), + }, + cappedAtDistrict: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly']), + aggregationLevels: [2], + }, + cappedWithDistrictForm: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Quarterly']), + aggregationLevels: [2], + }, + orphan: { aggregationType: 'SUM', dataSets: [] }, + }, + dataSets: { MonthlyForm: { periodType: 'Monthly' } }, + programs: { eventProgra: { programType: 'WITHOUT_REGISTRATION' } }, + programIndicators: { + pi: { program: 'eventProgra' }, + piByOwner: { program: 'eventProgra', orgUnitField: 'OWNER_AT_END' }, + piByRegistr: { program: 'eventProgra', orgUnitField: 'REGISTRATION' }, + piByAttribu: { program: 'eventProgra', orgUnitField: 'attributeAAA' }, + }, + indicators: { + ratio: { numerator: '#{facility}', denominator: '#{district}' }, + completeness: { + numerator: '#{facility}', + denominator: 'R{MonthlyForm.REPORTING_RATE}', + }, + partOfTotal: { numerator: '#{twoLevels}', denominator: '#{facility}' }, + casesPerFacility: { numerator: 'I{pi}', denominator: '#{facility}' }, + }, +} + +const profileOf = (id, dimensionItemType = 'DATA_ELEMENT') => + getDataItemProfile({ id, dimensionItemType }, METADATA) + +/* A nation (level 1) with 2 districts (2) and 4 facilities (3). + * MonthlyForm: 3 of the 4 facilities (missing facilityDDD, under districtBBB), + * and the nation. QuarterlyForm: both districts. WeeklyForm: facilityDDD. */ +const unit = (id, level, path) => ({ id, level, path }) +const COVERAGE = { + levels: [ + { id: 'levelNation', level: 1 }, + { id: 'levelDistri', level: 2 }, + { id: 'levelFacili', level: 3 }, + ], + units: { + nationUnit1: unit('nationUnit1', 1, '/nationUnit1'), + districtAAA: unit('districtAAA', 2, '/nationUnit1/districtAAA'), + districtBBB: unit('districtBBB', 2, '/nationUnit1/districtBBB'), + facilityAAA: unit( + 'facilityAAA', + 3, + '/nationUnit1/districtAAA/facilityAAA' + ), + facilityDDD: unit( + 'facilityDDD', + 3, + '/nationUnit1/districtBBB/facilityDDD' + ), + }, + roots: ['nationUnit1'], + userUnits: ['districtBBB'], + // clinicGroup: facilityAAA and facilityDDD. mixedGroupA: districtBBB and facilityAAA + groups: { + clinicGroup: { 3: 2 }, + mixedGroupA: { 2: 1, 3: 1 }, + emptyGroupA: {}, + }, + assignedLevels: { + MonthlyForm: { 1: 1, 3: 3 }, + QuarterlyForm: { 2: 2 }, + WeeklyForm: { 3: 1 }, + eventProgra: { 3: 2 }, + }, + counts: { + nationUnit1: { + totals: { 1: 1, 2: 2, 3: 4 }, + sources: { + MonthlyForm: { byLevel: { 1: 1, 3: 3 } }, + QuarterlyForm: { byLevel: { 2: 2 } }, + WeeklyForm: { byLevel: { 3: 1 } }, + eventProgra: { byLevel: { 3: 2 } }, + }, + }, + districtAAA: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 2 }, ancestors: 1 }, + QuarterlyForm: { byLevel: { 2: 1 } }, + WeeklyForm: { byLevel: {} }, + }, + }, + districtBBB: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: { 2: 1 } }, + WeeklyForm: { byLevel: { 3: 1 } }, + }, + }, + facilityAAA: { + totals: { 3: 1 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 1 }, + }, + }, + facilityDDD: { + totals: { 3: 1 }, + sources: { + eventProgra: { byLevel: {} }, + MonthlyForm: { byLevel: {}, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 1 }, + WeeklyForm: { byLevel: { 3: 1 } }, + }, + }, + 'clinicGroup:3:': { + totals: { 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 2 }, + }, + }, + 'mixedGroupA:2:': { + totals: { 2: 1, 3: 2 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + 'mixedGroupA:3:': { + totals: { 3: 1 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + 'mixedGroupA:2:districtAAA': { + totals: { 2: 0, 3: 0 }, + sources: { MonthlyForm: { byLevel: { 3: 0 }, ancestors: 1 } }, + }, + 'mixedGroupA:3:districtAAA': { + totals: { 3: 1 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + }, +} + +const judge = (id, orgUnits, { type, coverage = COVERAGE } = {}) => + getDataItemOrgUnitCompatibility(profileOf(id, type), orgUnits, coverage) + +describe('getDataItemOrgUnitCompatibility', () => { + it('is complete where every unit at the level entered is assigned', () => { + expect(judge('facility', ['districtAAA'])).toEqual([ + { + id: 'districtAAA', + status: 'full', + reasons: [], + coverage: { assigned: 2, total: 2, level: 3 }, + }, + ]) + }) + + it('is complete where only some are, since the others collect nothing', () => { + expect(judge('facility', ['nationUnit1'])).toEqual([ + { + id: 'nationUnit1', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 3, total: 4, level: 3 }, + }, + ]) + }) + + it('is empty at a unit not assigned, entered at its level elsewhere', () => { + expect(judge('facility', ['facilityDDD'])).toMatchObject([ + { status: 'none', reasons: ['NOT_ASSIGNED'], coverage: null }, + ]) + }) + + it('is empty below the level data is entered at', () => { + expect(judge('district', ['facilityAAA'])).toMatchObject([ + { status: 'none', reasons: ['BELOW_COLLECTION'] }, + ]) + expect(judge('district', ['nationUnit1', 'LEVEL-3'])).toMatchObject([ + { id: 'LEVEL-3', status: 'none', reasons: ['BELOW_COLLECTION'] }, + ]) + }) + + it('counts an element where any of its data sets is assigned', () => { + expect(judge('twoForms', ['facilityDDD'])).toMatchObject([ + { status: 'full' }, + ]) + expect(judge('twoForms', ['nationUnit1'])).toMatchObject([ + { + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 3, total: 4 }, + }, + ]) + }) + + it('is partial when another data set is entered above: its values are left out', () => { + expect(judge('twoLevels', ['facilityAAA'])).toEqual([ + { + id: 'facilityAAA', + status: 'partial', + reasons: ['BELOW_COLLECTION'], + coverage: { assigned: 1, total: 1, level: 3 }, + }, + ]) + }) + + it('needs every operand of an expression', () => { + expect( + judge('ratio', ['facilityAAA'], { type: 'INDICATOR' }) + ).toMatchObject([ + { status: 'none', reasons: ['OPERAND_EMPTY', 'BELOW_COLLECTION'] }, + ]) + expect( + judge('MonthlyForm.REPORTING_RATE', ['districtAAA'], { + type: 'REPORTING_RATE', + }) + ).toMatchObject([{ status: 'full' }]) + expect( + judge('completeness', ['facilityDDD'], { type: 'INDICATOR' }) + ).toMatchObject([ + { status: 'none', reasons: ['OPERAND_EMPTY', 'NOT_ASSIGNED'] }, + ]) + }) + + it('says an expression is computed from a partial operand', () => { + expect( + judge('partOfTotal', ['facilityAAA'], { type: 'INDICATOR' }) + ).toMatchObject([ + { + status: 'partial', + reasons: ['OPERAND_PARTIAL', 'BELOW_COLLECTION'], + }, + ]) + }) + + it('stops values below an aggregation level from reaching it', () => { + expect(judge('cappedAtDistrict', ['districtAAA'])).toEqual([ + { + id: 'districtAAA', + status: 'none', + reasons: ['AGGREGATION_LEVEL'], + coverage: null, + }, + ]) + expect(judge('cappedAtDistrict', ['facilityAAA'])).toMatchObject([ + { status: 'full', reasons: [] }, + ]) + }) + + it('counts values entered at the aggregation level or above it', () => { + expect(judge('cappedAtDistrict', ['nationUnit1'])).toMatchObject([ + { + status: 'full', + coverage: { assigned: 1, total: 1, level: 1 }, + }, + ]) + }) + + it('is partial when the values of one data set are stopped', () => { + expect(judge('cappedWithDistrictForm', ['districtAAA'])).toMatchObject([ + { status: 'partial', reasons: ['AGGREGATION_LEVEL'] }, + ]) + }) + + it('judges a level under boundaries, summing their counts', () => { + expect( + judge('facility', ['districtAAA', 'districtBBB', 'LEVEL-3']) + ).toEqual([ + { + id: 'LEVEL-3', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 3, total: 4, level: 3 }, + }, + ]) + }) + + it('judges a level under the roots, and the user units', () => { + expect(judge('district', ['LEVEL-2'])).toMatchObject([ + { status: 'full', coverage: { assigned: 2, total: 2 } }, + ]) + expect(judge('facility', ['USER_ORGUNIT_CHILDREN'])).toMatchObject([ + { status: 'full', coverage: { assigned: 1, total: 2 } }, + ]) + }) + + it('is empty for a level above every boundary', () => { + expect(judge('facility', ['facilityAAA', 'LEVEL-2'])).toEqual([ + { + id: 'LEVEL-2', + status: 'none', + reasons: ['NOT_ASSIGNED'], + coverage: null, + }, + ]) + }) + + it('judges event data where its program is assigned', () => { + expect( + judge('pi', ['nationUnit1'], { type: 'PROGRAM_INDICATOR' }) + ).toEqual([ + { + id: 'nationUnit1', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 2, total: 4, level: 3 }, + }, + ]) + expect( + judge('pi', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) + ).toMatchObject([{ status: 'none', reasons: ['NOT_ASSIGNED'] }]) + expect( + judge('eventProgra.someElement', ['facilityDDD'], { + type: 'PROGRAM_DATA_ELEMENT', + }) + ).toMatchObject([{ status: 'none', reasons: ['NOT_ASSIGNED'] }]) + }) + + it('needs the program of an indicator too', () => { + expect( + judge('casesPerFacility', ['facilityDDD'], { type: 'INDICATOR' }) + ).toMatchObject([ + { status: 'none', reasons: ['OPERAND_EMPTY', 'NOT_ASSIGNED'] }, + ]) + }) + + it('judges a group where its members are', () => { + expect(judge('facility', ['OU_GROUP-clinicGroup'])).toEqual([ + { + id: 'OU_GROUP-clinicGroup', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 1, total: 2, level: 3 }, + }, + ]) + expect(judge('district', ['OU_GROUP-clinicGroup'])).toMatchObject([ + { status: 'none', reasons: ['BELOW_COLLECTION'] }, + ]) + }) + + it('adds up a group over the levels its members are at', () => { + expect(judge('facility', ['OU_GROUP-mixedGroupA'])).toMatchObject([ + { + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + coverage: { assigned: 2, total: 3, level: 3 }, + }, + ]) + }) + + it('leaves out the levels with no member in the boundaries', () => { + expect( + judge('facility', ['districtAAA', 'OU_GROUP-mixedGroupA']) + ).toEqual([ + { + id: 'OU_GROUP-mixedGroupA', + status: 'full', + reasons: [], + coverage: { assigned: 1, total: 1, level: 3 }, + }, + ]) + }) + + it('is empty for a group with no members', () => { + expect(judge('facility', ['OU_GROUP-emptyGroupA'])).toMatchObject([ + { status: 'none', reasons: ['NOT_ASSIGNED'] }, + ]) + }) + + it('fits any place for a program indicator placed by registration or an attribute', () => { + expect( + judge('piByRegistr', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) + ).toEqual([ + { + id: 'facilityDDD', + status: 'full', + reasons: ['ORG_UNIT_FIELD'], + coverage: null, + }, + ]) + expect( + judge('piByAttribu', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) + ).toMatchObject([{ status: 'full', reasons: ['ORG_UNIT_FIELD'] }]) + }) + + it('keeps the program assignment for a program indicator placed by owner', () => { + expect( + judge('piByOwner', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) + ).toMatchObject([{ status: 'none', reasons: ['NOT_ASSIGNED'] }]) + }) + + it('cannot tell for groups not loaded, unknown units, event data without a program, or missing metadata', () => { + expect(judge('facility', ['OU_GROUP-notLoadedGr'])).toMatchObject([ + { status: 'unknown', reasons: ['UNKNOWN_ORG_UNIT'] }, + ]) + expect(judge('facility', ['notLoadedUn'])).toMatchObject([ + { status: 'unknown', reasons: ['UNKNOWN_ORG_UNIT'] }, + ]) + expect( + judge('facility', ['nationUnit1'], { coverage: null }) + ).toMatchObject([{ status: 'unknown', reasons: ['UNKNOWN_ORG_UNIT'] }]) + expect( + judge('someElement', ['nationUnit1'], { type: 'EVENT_DATA_ITEM' }) + ).toMatchObject([{ status: 'unknown', reasons: ['EVENT_DATA'] }]) + expect( + judge('notThere', ['nationUnit1'], { type: 'PROGRAM_INDICATOR' }) + ).toMatchObject([{ status: 'unknown', reasons: ['PROFILE_UNKNOWN'] }]) + expect(judge('orphan', ['nationUnit1'])).toMatchObject([ + { status: 'unknown', reasons: ['PROFILE_UNKNOWN'] }, + ]) + }) +}) + +describe('getDataItemProfileCompatibility, with org units', () => { + it('judges periods and org units apart, and combines them overall', () => { + const result = getDataItemProfileCompatibility( + profileOf('facility'), + { periods: ['2025Q1'], orgUnits: ['nationUnit1', 'facilityDDD'] }, + { orgUnitCoverage: COVERAGE } + ) + + expect(result).toMatchObject({ + status: 'none', + reasons: ['NOT_ASSIGNED', 'PARTLY_ASSIGNED'], + periods: [{ id: '2025Q1', status: 'full' }], + orgUnits: [ + { id: 'nationUnit1', status: 'full' }, + { id: 'facilityDDD', status: 'none' }, + ], + }) + }) + + it('leaves org units out when none are asked', () => { + expect( + getDataItemProfileCompatibility(profileOf('facility'), { + periods: ['2025Q1'], + }) + ).not.toHaveProperty('orgUnits') + }) + + it('judges org units alone', () => { + expect( + getDataItemProfileCompatibility( + profileOf('facility'), + { orgUnits: ['districtAAA'] }, + { orgUnitCoverage: COVERAGE } + ) + ).toMatchObject({ status: 'full', periods: [] }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js new file mode 100644 index 000000000..b8dae476b --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js @@ -0,0 +1,473 @@ +import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' +import { + getDataItemProfile, + getPeriodAggregationType, +} from '../getDataItemProfile.js' + +const dataElement = (periodTypes, aggregationType = 'SUM') => ({ + aggregationType, + valueType: 'INTEGER', + domainType: 'AGGREGATE', + dataSets: inDataSets(periodTypes), +}) + +const metadata = { + dataElements: { + monthly: dataElement(['Monthly']), + weekly: dataElement(['Weekly']), + mondayAndWednesday: dataElement(['Weekly', 'WeeklyWednesday']), + weeklyAndMonthly: dataElement(['Monthly', 'Weekly']), + population: dataElement(['Yearly'], 'AVERAGE'), + stock: dataElement(['Monthly'], 'AVERAGE_SUM_ORG_UNIT'), + noAggregation: dataElement(['Monthly'], 'NONE'), + noDataSet: dataElement([]), + oddType: dataElement(['Hourly']), + }, + dataSets: { + weeklyForm: { periodType: 'Weekly' }, + oddForm: { periodType: 'Hourly' }, + }, + indicators: { + coverage: { + numerator: '#{monthly.cocA}', + denominator: '#{population}', + }, + weeklyShare: { numerator: '#{weekly}', denominator: '#{monthly}' }, + nested: { numerator: 'N{coverage}', denominator: '1' }, + loopA: { numerator: 'N{loopB}', denominator: '1' }, + loopB: { numerator: 'N{loopA} + #{weekly}', denominator: '1' }, + withMissing: { numerator: '#{missing}', denominator: '1' }, + withUnknown: { numerator: 'S{sub}', denominator: '1' }, + eventsOnly: { numerator: 'I{pi} + D{pr.de}', denominator: 'C{c}' }, + reportingRate: { + numerator: 'R{weeklyForm.REPORTING_RATE}', + denominator: '1', + }, + lastOverride: { + numerator: '#{population}.aggregationType(LAST)', + denominator: '1', + }, + withMissingNested: { numerator: 'N{gone}', denominator: '1' }, + withMissingDataSet: { + numerator: 'R{goneForm.REPORTING_RATE}', + denominator: '1', + }, + }, + programIndicators: { + pi: { program: 'pr' }, + piByOwner: { program: 'pr', orgUnitField: 'OWNER_AT_START' }, + piByRegist: { program: 'pr', orgUnitField: 'REGISTRATION' }, + }, + programs: { pr: { programType: 'WITHOUT_REGISTRATION' } }, + expressionDimensionItems: { + weeklyPlusMonthly: { expression: '#{weekly} + #{monthly}' }, + }, +} + +const profile = (id, dimensionItemType, data = metadata) => + getDataItemProfile({ id, dimensionItemType }, data) + +describe('getDataItemProfile', () => { + describe('data elements', () => { + it('takes the data set type', () => { + expect(profile('monthly', 'DATA_ELEMENT')).toEqual({ + unknown: false, + reasons: [], + sources: [ + { + dataSet: { id: 'MonthlyForm', periodType: 'Monthly' }, + elements: [ + { + id: 'monthly', + aggregationType: 'SUM', + periodAggregationType: 'SUM', + }, + ], + reportingRate: false, + }, + ], + period: { + types: ['Monthly'], + finest: 'Monthly', + mixed: false, + }, + }) + }) + + it('has one source per data set', () => { + expect(profile('weeklyAndMonthly', 'DATA_ELEMENT').sources).toEqual( + [ + { + dataSet: { id: 'MonthlyForm', periodType: 'Monthly' }, + elements: [ + { + id: 'weeklyAndMonthly', + aggregationType: 'SUM', + periodAggregationType: 'SUM', + }, + ], + reportingRate: false, + }, + { + dataSet: { id: 'WeeklyForm', periodType: 'Weekly' }, + elements: [ + { + id: 'weeklyAndMonthly', + aggregationType: 'SUM', + periodAggregationType: 'SUM', + }, + ], + reportingRate: false, + }, + ] + ) + }) + + it('reads an operand by its data element, and keeps it', () => { + const operand = profile('monthly.cocA', 'DATA_ELEMENT_OPERAND') + + expect(operand.period.finest).toBe('Monthly') + expect(operand.sources[0].elements).toEqual([ + expect.objectContaining({ + id: 'monthly', + operand: 'monthly.cocA', + }), + ]) + }) + + it('lists mixed types, and the finest is the longest', () => { + expect(profile('weeklyAndMonthly', 'DATA_ELEMENT')).toMatchObject({ + period: { + types: ['Weekly', 'Monthly'], + finest: 'Monthly', + mixed: true, + }, + }) + }) + + it('goes up a type when two types have the same length', () => { + expect(profile('mondayAndWednesday', 'DATA_ELEMENT')).toMatchObject( + { + period: { + types: ['Weekly', 'WeeklyWednesday'], + finest: 'BiWeekly', + mixed: true, + }, + } + ) + }) + + it.each([ + ['population', 'AVERAGE', 'Yearly'], + ['stock', 'AVERAGE', 'Monthly'], + ])( + 'counts averaged data in the finest type: %s', + (id, periodAggregationType, finest) => { + expect(profile(id, 'DATA_ELEMENT')).toMatchObject({ + unknown: false, + sources: [{ elements: [{ periodAggregationType }] }], + period: { finest }, + }) + } + ) + + it('is unknown when not aggregatable', () => { + expect(profile('noAggregation', 'DATA_ELEMENT')).toMatchObject({ + unknown: true, + reasons: [{ code: 'NOT_AGGREGATABLE', id: 'noAggregation' }], + }) + }) + + it('is unknown in no data set', () => { + expect(profile('noDataSet', 'DATA_ELEMENT')).toMatchObject({ + unknown: true, + reasons: [{ code: 'NO_DATA_SET', id: 'noDataSet' }], + sources: [ + { + dataSet: null, + elements: [{ id: 'noDataSet' }], + }, + ], + period: { types: [], finest: null }, + }) + }) + + it('is unknown with a period type it does not know', () => { + expect(profile('oddType', 'DATA_ELEMENT')).toMatchObject({ + unknown: true, + reasons: [ + { + code: 'UNKNOWN_PERIOD_TYPE', + id: 'oddType', + periodType: 'Hourly', + }, + ], + period: { types: [] }, + }) + }) + + it('is unknown without metadata', () => { + expect(profile('missing', 'DATA_ELEMENT', {})).toMatchObject({ + unknown: true, + reasons: [{ code: 'MISSING_METADATA', id: 'missing' }], + }) + }) + }) + + describe('reporting rates', () => { + it('take the data set type', () => { + expect( + profile('weeklyForm.REPORTING_RATE', 'REPORTING_RATE') + ).toMatchObject({ + sources: [ + { + dataSet: { id: 'weeklyForm', periodType: 'Weekly' }, + elements: [], + reportingRate: true, + }, + ], + period: { types: ['Weekly'], finest: 'Weekly' }, + }) + }) + + it('are unknown without the data set', () => { + expect( + profile('goneForm.ACTUAL_REPORTS', 'REPORTING_RATE') + ).toMatchObject({ unknown: true }) + }) + + it('are unknown with a period type it does not know', () => { + expect( + profile('oddForm.REPORTING_RATE', 'REPORTING_RATE') + ).toMatchObject({ unknown: true, period: { types: [] } }) + }) + }) + + describe('indicators', () => { + it('read numerator and denominator', () => { + // The yearly population is measured directly by year only + expect(profile('coverage', 'INDICATOR')).toMatchObject({ + period: { + types: ['Monthly', 'Yearly'], + finest: 'Yearly', + mixed: true, + }, + }) + }) + + it('group their data elements by data set, with their disaggregations', () => { + const { sources } = getDataItemProfile( + { id: 'sum', dimensionItemType: 'INDICATOR' }, + { + ...metadata, + indicators: { + sum: { + numerator: '#{monthly} + #{stock} + #{monthly.coc}', + denominator: 'R{MonthlyForm.REPORTING_RATE}', + }, + }, + dataSets: { MonthlyForm: { periodType: 'Monthly' } }, + } + ) + + expect(sources).toEqual([ + { + dataSet: { id: 'MonthlyForm', periodType: 'Monthly' }, + elements: [ + { + id: 'monthly', + aggregationType: 'SUM', + periodAggregationType: 'SUM', + }, + { + id: 'stock', + aggregationType: 'AVERAGE_SUM_ORG_UNIT', + periodAggregationType: 'AVERAGE', + }, + { + id: 'monthly', + operand: 'monthly.coc', + aggregationType: 'SUM', + periodAggregationType: 'SUM', + }, + ], + reportingRate: true, + }, + ]) + }) + + it('mix the types of their data elements', () => { + expect(profile('weeklyShare', 'INDICATOR')).toMatchObject({ + period: { finest: 'Monthly', mixed: true }, + }) + }) + + it('read nested indicators', () => { + expect(profile('nested', 'INDICATOR').period.finest).toBe('Yearly') + }) + + it('read indicators that refer to each other once', () => { + expect(profile('loopA', 'INDICATOR')).toMatchObject({ + unknown: false, + period: { finest: 'Weekly' }, + }) + }) + + it('take an aggregation type set in the expression', () => { + expect(profile('lastOverride', 'INDICATOR')).toMatchObject({ + sources: [ + { + elements: [ + { + aggregationType: 'LAST', + periodAggregationType: 'LAST', + }, + ], + }, + ], + period: { finest: 'Yearly' }, + }) + }) + + it('take a reporting rate operand', () => { + expect(profile('reportingRate', 'INDICATOR').period.finest).toBe( + 'Weekly' + ) + }) + + it('are not limited by event data, constants or days', () => { + expect(profile('eventsOnly', 'INDICATOR')).toMatchObject({ + unknown: false, + period: { types: [], finest: null }, + }) + }) + + it('read the programs of their event data', () => { + expect(profile('eventsOnly', 'INDICATOR').sources).toEqual([ + { + dataSet: null, + program: { id: 'pr' }, + elements: [], + reportingRate: false, + }, + ]) + }) + + it.each([ + ['withMissing', 'MISSING_METADATA'], + ['withMissingNested', 'MISSING_METADATA'], + ['withMissingDataSet', 'MISSING_METADATA'], + ['withUnknown', 'UNKNOWN_OPERAND'], + ['gone', 'MISSING_METADATA'], + ])('%s is unknown: %s', (id, code) => { + expect(profile(id, 'INDICATOR')).toMatchObject({ + unknown: true, + reasons: [expect.objectContaining({ code })], + }) + }) + }) + + describe('expression dimension items', () => { + it('read their expression', () => { + expect( + profile('weeklyPlusMonthly', 'EXPRESSION_DIMENSION_ITEM') + ).toMatchObject({ period: { finest: 'Monthly', mixed: true } }) + }) + + it('are unknown without metadata', () => { + expect(profile('gone', 'EXPRESSION_DIMENSION_ITEM').unknown).toBe( + true + ) + }) + }) + + describe('event and tracker items', () => { + it.each([ + ['pi', 'PROGRAM_INDICATOR'], + ['pr.de', 'PROGRAM_DATA_ELEMENT'], + ['pr.de.option', 'PROGRAM_DATA_ELEMENT_OPTION'], + ['pr.at', 'PROGRAM_ATTRIBUTE'], + ['pr.de', 'EVENT_DATA_ITEM'], + ])( + '%s (%s) has its program as source, and no period type', + (id, type) => { + expect(profile(id, type)).toMatchObject({ + unknown: false, + sources: [{ program: { id: 'pr' } }], + period: { types: [], finest: null }, + }) + } + ) + + it('keeps a program indicator placed by registration or an attribute apart from its program', () => { + expect(profile('piByRegist', 'PROGRAM_INDICATOR').sources).toEqual([ + { + dataSet: null, + program: { id: 'pr' }, + orgUnitField: 'REGISTRATION', + elements: [], + reportingRate: false, + }, + ]) + expect(profile('piByOwner', 'PROGRAM_INDICATOR').sources).toEqual([ + { + dataSet: null, + program: { id: 'pr' }, + elements: [], + reportingRate: false, + }, + ]) + }) + + it('has no source without a program in its id', () => { + expect(profile('de', 'EVENT_DATA_ITEM')).toMatchObject({ + unknown: false, + sources: [], + }) + }) + + it('is unknown without the metadata of its program indicator or program', () => { + expect(profile('gone', 'PROGRAM_INDICATOR')).toMatchObject({ + unknown: true, + reasons: [{ code: 'MISSING_METADATA', id: 'gone' }], + }) + expect(profile('nope.de', 'PROGRAM_DATA_ELEMENT')).toMatchObject({ + unknown: true, + reasons: [{ code: 'MISSING_METADATA', id: 'nope' }], + }) + }) + }) + + it('is unknown for an item type it does not read', () => { + expect(profile('any', 'ORGANISATION_UNIT')).toMatchObject({ + unknown: true, + reasons: [ + { + code: 'UNSUPPORTED_ITEM_TYPE', + id: 'any', + dimensionItemType: 'ORGANISATION_UNIT', + }, + ], + }) + expect(getDataItemProfile({ id: 'any' }).unknown).toBe(true) + }) +}) + +describe('getPeriodAggregationType', () => { + it.each([ + ['SUM', 'SUM'], + ['AVERAGE', 'AVERAGE'], + ['AVERAGE_SUM_ORG_UNIT', 'AVERAGE'], + ['LAST', 'LAST'], + ['LAST_AVERAGE_ORG_UNIT', 'LAST'], + ['LAST_LAST_ORG_UNIT', 'LAST'], + ['LAST_IN_PERIOD_AVERAGE_ORG_UNIT', 'LAST_IN_PERIOD'], + ['FIRST_AVERAGE_ORG_UNIT', 'FIRST'], + ['FIRST_FIRST_ORG_UNIT', 'FIRST'], + ['MAX_SUM_ORG_UNIT', 'MAX'], + ['MIN_SUM_ORG_UNIT', 'MIN'], + [undefined, undefined], + ])('%s aggregates over time as %s', (aggregationType, expected) => { + expect(getPeriodAggregationType(aggregationType)).toBe(expected) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js new file mode 100644 index 000000000..5aac225d0 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js @@ -0,0 +1,526 @@ +import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' +import { getDataItemProfile } from '../getDataItemProfile.js' +import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' + +const dataElement = (periodTypes, aggregationType = 'SUM') => ({ + aggregationType, + dataSets: inDataSets(periodTypes), +}) + +const metadata = { + dataElements: { + monthly: dataElement(['Monthly']), + weekly: dataElement(['Weekly']), + wednesday: dataElement(['WeeklyWednesday']), + yearly: dataElement(['Yearly']), + financialOct: dataElement(['FinancialOct']), + population: dataElement(['Yearly'], 'AVERAGE'), + stock: dataElement(['Monthly'], 'LAST'), + firstMonthly: dataElement(['Monthly'], 'FIRST'), + firstDaily: dataElement(['Daily'], 'FIRST'), + lastFinancialApril: dataElement(['FinancialApril'], 'LAST'), + lastTwoYearly: dataElement(['TwoYearly'], 'LAST'), + twoYearly: dataElement(['TwoYearly']), + mondayWednesday: dataElement(['Weekly', 'WeeklyWednesday']), + }, + indicators: { + coverage: { numerator: '#{monthly}', denominator: '#{population}' }, + share: { numerator: '#{weekly}', denominator: '#{monthly}' }, + stockPerHead: { numerator: '#{stock}', denominator: '#{population}' }, + weeklyShareOfMonthly: { + numerator: '#{mondayWednesday}', + denominator: '#{weekly}', + }, + timesTwelve: { numerator: '#{monthly} * 12', denominator: '1' }, + }, +} + +const indicator = (id) => ({ id, dimensionItemType: 'INDICATOR' }) + +// A data element id, or an item +const profileOf = (item) => + getDataItemProfile( + typeof item === 'string' + ? { id: item, dimensionItemType: 'DATA_ELEMENT' } + : item, + metadata + ) + +const compatibilityOf = (item, periods, options) => + getDataItemProfileCompatibility(profileOf(item), { periods }, options) + +// The overall status and reasons +const outcomeOf = (...args) => { + const { status, reasons } = compatibilityOf(...args) + + return { status, reasons } +} + +const full = (reasons = []) => ({ status: 'full', reasons }) +const none = (reasons) => ({ status: 'none', reasons }) +const unknown = (reasons) => ({ status: 'unknown', reasons }) + +describe('getDataItemProfileCompatibility', () => { + it('gives results per period, per source and overall', () => { + expect(compatibilityOf('monthly', ['2025W2', '202501'])).toEqual({ + status: 'none', + reasons: ['SHORTER'], + sources: [ + { + dataSetId: 'MonthlyForm', + status: 'none', + reasons: ['SHORTER'], + }, + ], + periods: [ + { + id: '2025W2', + periodTypes: ['Weekly'], + status: 'none', + reasons: ['SHORTER'], + alignsWithData: null, + sources: [ + { + dataSetId: 'MonthlyForm', + status: 'none', + reasons: ['SHORTER'], + }, + ], + }, + { + id: '202501', + periodTypes: ['Monthly'], + status: 'full', + reasons: [], + alignsWithData: true, + sources: [ + { + dataSetId: 'MonthlyForm', + status: 'full', + reasons: [], + }, + ], + }, + ], + }) + }) + + it('has no status without periods', () => { + expect(getDataItemProfileCompatibility(profileOf('monthly'))).toEqual({ + status: null, + reasons: [], + sources: [{ dataSetId: 'MonthlyForm', status: null, reasons: [] }], + periods: [], + }) + }) + + it('takes period types', () => { + expect(outcomeOf('monthly', ['Quarterly'])).toEqual(full()) + expect(outcomeOf('monthly', ['Daily'])).toEqual(none(['SHORTER'])) + }) + + it('gives nothing for another type of the same length', () => { + expect(outcomeOf('wednesday', ['2025W2'])).toEqual(none(['OTHER_TYPE'])) + expect(outcomeOf('yearly', ['2025April'])).toEqual(none(['OTHER_TYPE'])) + }) + + describe('values not measured for the period', () => { + it('are averaged for averaged data in shorter periods', () => { + expect(outcomeOf('population', ['202501'])).toEqual( + full(['AVERAGED']) + ) + expect(outcomeOf('population', ['2025'])).toEqual(full()) + }) + + describe('FIRST and LAST', () => { + it('LAST carries the latest data period of the years touched', () => { + // June's value, for a day in July + expect(outcomeOf('stock', ['20250715'])).toEqual( + full(['CARRIED']) + ) + // December 2024 is outside the years 1 January 2025 touches + expect(outcomeOf('stock', ['20250101'])).toEqual( + none(['NOTHING_TO_CARRY']) + ) + expect(outcomeOf('stock', ['2025WedW1'])).toEqual( + none(['NOTHING_TO_CARRY']) + ) + }) + + it('LAST is measured for the period when its data adds up into it', () => { + expect(outcomeOf('stock', ['2025Q3'])).toEqual(full()) + expect(outcomeOf('stock', ['2025'])).toEqual(full()) + }) + + it('FIRST takes the earliest data period of the years touched', () => { + // January's value, for July and for the third quarter + expect(outcomeOf('firstMonthly', ['202507'])).toEqual( + full(['CARRIED']) + ) + expect(outcomeOf('firstMonthly', ['2025Q3'])).toEqual( + full(['CARRIED']) + ) + expect(outcomeOf('firstMonthly', ['2025'])).toEqual(full()) + expect(outcomeOf('firstMonthly', ['20250101'])).toEqual( + none(['NOTHING_TO_CARRY']) + ) + // 1 January's value, not the day's own + expect(outcomeOf('firstDaily', ['20250715'])).toEqual( + full(['CARRIED']) + ) + expect(outcomeOf('firstDaily', ['20250101'])).toEqual(full()) + expect(outcomeOf('firstDaily', ['2025WedW1'])).toEqual(full()) + }) + + it('read every period of the selection as one request', () => { + // With 2024 in the request, December 2024 counts on 1 January + const withYear = compatibilityOf('stock', ['20250101', '2024']) + + expect(withYear.periods[0]).toMatchObject(full(['CARRIED'])) + }) + + it('read the year in a data period id', () => { + // 2024April (April 2024 to March 2025) is a 2024 period + expect(outcomeOf('lastFinancialApril', ['20250715'])).toEqual( + none(['NOTHING_TO_CARRY']) + ) + // …but it counts when the request touches 2024 + expect( + compatibilityOf('lastFinancialApril', ['20250715', '2024']) + .periods[0] + ).toMatchObject(full(['CARRIED'])) + }) + + it('may carry when the selection has no dates', () => { + expect(outcomeOf('stock', ['Weekly'])).toEqual( + full(['CARRIED']) + ) + expect(outcomeOf('stock', ['LAST_12_MONTHS'])).toEqual(full()) + // FIRST gives January's value to every month of the year + expect(outcomeOf('firstMonthly', ['LAST_12_MONTHS'])).toEqual( + full(['CARRIED']) + ) + expect( + compatibilityOf('stock', ['20250101', 'LAST_12_MONTHS']) + .periods[0] + ).toMatchObject(full(['CARRIED'])) + }) + + it('may carry when the data type has no dates', () => { + expect(outcomeOf('lastTwoYearly', ['2025'])).toEqual( + full(['CARRIED']) + ) + }) + }) + + it('show in each source', () => { + expect(compatibilityOf('stock', ['20250715']).sources).toEqual([ + { + dataSetId: 'MonthlyForm', + status: 'full', + reasons: ['CARRIED'], + }, + ]) + }) + }) + + describe('expressions', () => { + it('are complete with an averaged denominator, which they report', () => { + expect(outcomeOf(indicator('coverage'), ['202501'])).toEqual( + full(['AVERAGED']) + ) + expect(outcomeOf(indicator('coverage'), ['2025'])).toEqual(full()) + }) + + it('are empty when one operand gives nothing, and say so', () => { + expect(outcomeOf(indicator('coverage'), ['2025W2'])).toEqual( + none(['OPERAND_EMPTY', 'SHORTER', 'AVERAGED']) + ) + expect(outcomeOf(indicator('share'), ['2025W2'])).toEqual( + none(['OPERAND_EMPTY', 'SHORTER']) + ) + }) + + it('are partial from a partial operand, and say so', () => { + expect( + outcomeOf(indicator('weeklyShareOfMonthly'), ['2025W2']) + ).toEqual({ + status: 'partial', + reasons: ['OPERAND_PARTIAL', 'OTHER_TYPE'], + }) + }) + + it('say nothing more with one operand', () => { + expect(outcomeOf(indicator('timesTwelve'), ['2025W2'])).toEqual( + none(['SHORTER']) + ) + }) + + it('report every kind of indirect value', () => { + expect(outcomeOf(indicator('stockPerHead'), ['20250715'])).toEqual( + full(['AVERAGED', 'CARRIED']) + ) + }) + }) + + describe('an element in several data sets', () => { + const malaria = (aggregationType) => + getDataItemProfile( + { id: 'malaria', dimensionItemType: 'DATA_ELEMENT' }, + { + dataElements: { + malaria: { + aggregationType, + dataSets: [ + { id: 'surveillance', periodType: 'Weekly' }, + { id: 'report', periodType: 'Monthly' }, + ], + }, + }, + } + ) + + it('is partial when some data sets give nothing', () => { + expect( + getDataItemProfileCompatibility(malaria('SUM'), { + periods: ['2025W2', '202501'], + }) + ).toMatchObject({ + status: 'partial', + reasons: ['SHORTER'], + sources: [ + { dataSetId: 'surveillance', status: 'full' }, + { dataSetId: 'report', status: 'none' }, + ], + periods: [ + { + status: 'partial', + reasons: ['SHORTER'], + sources: [ + { + dataSetId: 'surveillance', + status: 'full', + reasons: [], + }, + { + dataSetId: 'report', + status: 'none', + reasons: ['SHORTER'], + }, + ], + }, + full(), + ], + }) + }) + + it('is complete when the others give averaged values', () => { + expect( + getDataItemProfileCompatibility(malaria('AVERAGE'), { + periods: ['2025W2'], + }) + ).toMatchObject(full(['AVERAGED'])) + }) + + it('is empty when every data set gives nothing', () => { + expect( + getDataItemProfileCompatibility(malaria('SUM'), { + periods: ['20250115'], + }) + ).toMatchObject(none(['SHORTER'])) + }) + }) + + it('reads a reporting rate in a shorter period as empty', () => { + const profile = getDataItemProfile( + { id: 'form.REPORTING_RATE', dimensionItemType: 'REPORTING_RATE' }, + { dataSets: { form: { periodType: 'Monthly' } } } + ) + + expect( + getDataItemProfileCompatibility(profile, { periods: ['2025W2'] }) + ).toMatchObject({ + ...none(['REPORTING_RATE']), + sources: [{ dataSetId: 'form', ...none(['REPORTING_RATE']) }], + }) + expect( + getDataItemProfileCompatibility(profile, { periods: ['2025Q1'] }) + ).toMatchObject(full()) + }) + + it('is full for event data, placed by its own dates', () => { + const profile = getDataItemProfile( + { id: 'pi', dimensionItemType: 'PROGRAM_INDICATOR' }, + { + programIndicators: { pi: { program: 'pr' } }, + programs: { pr: {} }, + } + ) + + expect( + getDataItemProfileCompatibility(profile, { periods: ['20250115'] }) + ).toMatchObject({ + ...full(), + sources: [{ dataSetId: null, status: 'full', reasons: [] }], + }) + }) + + describe('unknown', () => { + it('when the profile is, for the item and each source', () => { + const profile = getDataItemProfile( + { id: 'odd', dimensionItemType: 'DATA_ELEMENT' }, + { + dataElements: { + odd: { + aggregationType: 'SUM', + dataSets: [{ id: 'hourly', periodType: 'Hourly' }], + }, + }, + } + ) + + expect( + getDataItemProfileCompatibility(profile, { + periods: ['202501'], + }) + ).toMatchObject({ + ...unknown(['PROFILE_UNKNOWN']), + sources: [ + { dataSetId: 'hourly', ...unknown(['PROFILE_UNKNOWN']) }, + ], + }) + expect(outcomeOf('missing', ['202501'])).toEqual( + unknown(['PROFILE_UNKNOWN']) + ) + }) + + it('for a period it cannot read', () => { + expect(compatibilityOf('monthly', ['NEXT_CENTURY'])).toMatchObject({ + ...unknown(['UNKNOWN_PERIOD']), + periods: [{ periodTypes: [], alignsWithData: null }], + }) + }) + + it('for QuarterlyNov before 2.41', () => { + const on = (minor) => ({ serverVersion: { major: 2, minor } }) + + expect(outcomeOf('monthly', ['2025NovQ1'], on(40))).toEqual( + unknown(['UNSUPPORTED_VERSION']) + ) + expect(outcomeOf('monthly', ['2025NovQ1'], on(41))).toEqual(full()) + expect(outcomeOf('monthly', ['2025NovQ1'])).toEqual(full()) + expect(outcomeOf('monthly', ['2025Q1'], on(40))).toEqual(full()) + }) + }) + + it('ranks empty, then partial, then unknown, then complete', () => { + expect(outcomeOf('monthly', ['202501', 'NEXT_CENTURY'])).toEqual( + unknown(['UNKNOWN_PERIOD']) + ) + expect(outcomeOf('monthly', ['NEXT_CENTURY', '2025W2'])).toEqual( + none(['SHORTER', 'UNKNOWN_PERIOD']) + ) + }) + + describe('relative periods', () => { + it('read their type', () => { + expect(outcomeOf('monthly', ['LAST_12_MONTHS'])).toEqual(full()) + expect(outcomeOf('monthly', ['LAST_7_DAYS'])).toEqual( + none(['SHORTER']) + ) + }) + + it('hold when every type they could be agrees', () => { + expect(outcomeOf('monthly', ['LAST_4_WEEKS'])).toEqual( + none(['SHORTER']) + ) + expect(outcomeOf('monthly', ['THIS_FINANCIAL_YEAR'])).toEqual( + full() + ) + // Yearly data gives nothing in any financial year + expect(outcomeOf('yearly', ['THIS_FINANCIAL_YEAR'])).toEqual( + none(['OTHER_TYPE']) + ) + }) + + it('are unknown when their type depends on a setting not given', () => { + expect(outcomeOf('weekly', ['LAST_4_WEEKS'])).toEqual( + unknown(['SETTING_MISSING']) + ) + expect(outcomeOf('financialOct', ['THIS_FINANCIAL_YEAR'])).toEqual( + unknown(['SETTING_MISSING']) + ) + }) + + it('take the settings as options', () => { + expect( + outcomeOf('weekly', ['LAST_4_WEEKS'], { + weeklyPeriodType: 'Weekly', + }) + ).toEqual(full()) + expect( + outcomeOf('weekly', ['LAST_4_WEEKS'], { + weeklyPeriodType: 'WeeklySunday', + }) + ).toEqual(none(['OTHER_TYPE'])) + expect( + outcomeOf('financialOct', ['THIS_FINANCIAL_YEAR'], { + financialYearPeriodType: 'FinancialOct', + }) + ).toEqual(full()) + }) + + it('do not tell whether they align with the data', () => { + expect( + compatibilityOf('monthly', ['LAST_12_MONTHS']).periods[0] + .alignsWithData + ).toBeNull() + }) + }) + + describe('alignsWithData', () => { + const alignsOf = (id, period, options) => + compatibilityOf(id, [period], options).periods[0].alignsWithData + + it('is true when the period is whole data periods', () => { + expect(alignsOf('monthly', '2025Q1')).toBe(true) + expect(alignsOf('population', '2025')).toBe(true) + }) + + it('is false when data periods cross its edges', () => { + expect(alignsOf('weekly', '202501')).toBe(false) + expect(alignsOf('weekly', '2025')).toBe(false) + }) + + it('is null when it cannot be told', () => { + expect(alignsOf('monthly', 'Yearly')).toBeNull() + expect(alignsOf('monthly', '2025W2')).toBeNull() + expect(alignsOf('twoYearly', 'TwoYearly')).toBeNull() + }) + + it('works in other calendars', () => { + expect(alignsOf('monthly', '2081Q1', { calendar: 'nepali' })).toBe( + true + ) + expect(alignsOf('weekly', '208101', { calendar: 'nepali' })).toBe( + false + ) + }) + + it('is null when a data type has no dates', () => { + const profile = getDataItemProfile( + { id: 'mixed', dimensionItemType: 'DATA_ELEMENT' }, + { + dataElements: { + mixed: dataElement(['Monthly', 'TwoYearly']), + }, + } + ) + + expect( + getDataItemProfileCompatibility(profile, { periods: ['2025'] }) + .periods[0] + ).toMatchObject({ status: 'partial', alignsWithData: true }) + }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js new file mode 100644 index 000000000..22204f288 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js @@ -0,0 +1,160 @@ +import { + getOrgUnitTargets, + getUnitsToCount, + parseOrgUnitItem, + readOrgUnitSelection, +} from '../orgUnitSelection.js' + +describe('parseOrgUnitItem', () => { + it.each([ + ['ImspTQPwCqd', { kind: 'UNIT' }], + ['LEVEL-2', { kind: 'LEVEL', level: 2 }], + ['LEVEL-wjP19dkFeIk', { kind: 'LEVEL', level: 'wjP19dkFeIk' }], + ['OU_GROUP-RXL3lPSK8oG', { kind: 'GROUP', group: 'RXL3lPSK8oG' }], + ['USER_ORGUNIT', { kind: 'USER', depth: 0 }], + ['USER_ORGUNIT_CHILDREN', { kind: 'USER', depth: 1 }], + ['USER_ORGUNIT_GRANDCHILDREN', { kind: 'USER', depth: 2 }], + ['not an id', { kind: 'UNKNOWN' }], + ])('reads %s', (id, expected) => { + expect(parseOrgUnitItem(id)).toEqual({ id, ...expected }) + }) +}) + +describe('readOrgUnitSelection', () => { + it('judges units on their own', () => { + expect(readOrgUnitSelection(['unitAAAAAAA', 'unitBBBBBBB'])).toEqual({ + items: [ + { id: 'unitAAAAAAA', kind: 'UNIT' }, + { id: 'unitBBBBBBB', kind: 'UNIT' }, + ], + boundaries: [], + }) + }) + + it('takes the units as boundaries of a level or a group', () => { + expect( + readOrgUnitSelection(['unitAAAAAAA', 'LEVEL-3', 'USER_ORGUNIT']) + ).toEqual({ + items: [ + { id: 'LEVEL-3', kind: 'LEVEL', level: 3 }, + { id: 'USER_ORGUNIT', kind: 'USER', depth: 0 }, + ], + boundaries: ['unitAAAAAAA'], + }) + }) + + it('reads nothing from no selection', () => { + expect(readOrgUnitSelection()).toEqual({ items: [], boundaries: [] }) + }) +}) + +describe('getUnitsToCount', () => { + it('counts the units of a selection', () => { + expect(getUnitsToCount(['unitAAAAAAA', 'LEVEL-2'])).toEqual({ + unitIds: ['unitAAAAAAA'], + needsRoots: false, + needsUser: false, + groupIds: [], + }) + }) + + it('counts the roots for a level alone, and the user units', () => { + expect(getUnitsToCount(['LEVEL-2', 'USER_ORGUNIT_CHILDREN'])).toEqual({ + unitIds: [], + needsRoots: true, + needsUser: true, + groupIds: [], + }) + expect(getUnitsToCount()).toEqual({ + unitIds: [], + needsRoots: false, + needsUser: false, + groupIds: [], + }) + }) + + it('lists the groups once each, with no roots for them', () => { + expect( + getUnitsToCount(['OU_GROUP-groupAAAAAA', 'OU_GROUP-groupAAAAAA']) + ).toEqual({ + unitIds: [], + needsRoots: false, + needsUser: false, + groupIds: ['groupAAAAAA'], + }) + }) +}) + +describe('getOrgUnitTargets', () => { + const COVERAGE = { + levels: [ + { id: 'levelNation', level: 1 }, + { id: 'levelDistri', level: 2 }, + ], + units: { + nation: { id: 'nation', level: 1 }, + district: { id: 'district', level: 2 }, + facility: { id: 'facility', level: 4 }, + }, + roots: ['nation'], + userUnits: ['district'], + groups: { groupAAAAAA: { 2: 3, 3: 0, 4: 5 } }, + } + const targets = (id, boundaries = [], coverage = COVERAGE) => + getOrgUnitTargets(parseOrgUnitItem(id), boundaries, coverage) + + it('asks a unit at its own level', () => { + expect(targets('district')).toBeNull() + expect( + getOrgUnitTargets({ id: 'district', kind: 'UNIT' }, [], COVERAGE) + ).toEqual([{ unitId: 'district', level: 2 }]) + }) + + it('asks a level under each boundary that is above it', () => { + expect(targets('LEVEL-3', ['nation', 'facility'])).toEqual([ + { unitId: 'nation', level: 3 }, + ]) + }) + + it('asks a level under the roots without boundaries, by number or id', () => { + expect(targets('LEVEL-levelDistri')).toEqual([ + { unitId: 'nation', level: 2 }, + ]) + }) + + it('asks the user units at their level plus the depth', () => { + expect(targets('USER_ORGUNIT_GRANDCHILDREN')).toEqual([ + { unitId: 'district', level: 4 }, + ]) + }) + + it('asks a group at each level its members are at', () => { + expect(targets('OU_GROUP-groupAAAAAA')).toEqual([ + { key: 'groupAAAAAA:2:', level: 2, group: 'groupAAAAAA' }, + { key: 'groupAAAAAA:4:', level: 4, group: 'groupAAAAAA' }, + ]) + }) + + it('asks a group under each boundary at or above its members', () => { + expect( + targets('OU_GROUP-groupAAAAAA', ['district', 'facility']) + ).toEqual([ + { key: 'groupAAAAAA:2:district', level: 2, group: 'groupAAAAAA' }, + { key: 'groupAAAAAA:4:district', level: 4, group: 'groupAAAAAA' }, + { key: 'groupAAAAAA:4:facility', level: 4, group: 'groupAAAAAA' }, + ]) + }) + + it('cannot tell for a group, an unknown level, or units not loaded', () => { + expect(targets('OU_GROUP-notLoadedGr')).toBeNull() + expect(targets('OU_GROUP-groupAAAAAA', ['notLoadedUn'])).toBeNull() + expect(targets('LEVEL-unknownLvl')).toBeNull() + expect(targets('LEVEL-3', ['notLoadedUn'])).toBeNull() + expect( + targets('USER_ORGUNIT', [], { ...COVERAGE, userUnits: null }) + ).toBeNull() + expect( + targets('USER_ORGUNIT', [], { ...COVERAGE, userUnits: ['other'] }) + ).toBeNull() + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js new file mode 100644 index 000000000..6417cd8fb --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js @@ -0,0 +1,73 @@ +import { getOrgUnitSide, withOrgUnitSide } from '../orgUnitSide.js' + +const source = (id, orgUnitLevels) => ({ + dataSet: id && { id, periodType: 'Monthly' }, + elements: [], + reportingRate: false, + ...(orgUnitLevels && { orgUnitLevels }), +}) + +describe('getOrgUnitSide', () => { + it('gives the levels assigned, deepest first, and the deepest', () => { + expect( + getOrgUnitSide([source('formA', { 1: 1, 2: 0, 4: 1159 })]) + ).toEqual({ levels: [4, 1], entryLevel: 4, mixed: false }) + }) + + it('is mixed when data sets are entered at different levels', () => { + expect( + getOrgUnitSide([ + source('formA', { 4: 10 }), + source('formB', { 2: 3 }), + ]) + ).toEqual({ levels: [4, 2], entryLevel: 4, mixed: true }) + }) + + it('has no level without assignments', () => { + expect(getOrgUnitSide([source('formA', {}), source(null)])).toEqual({ + levels: [], + entryLevel: null, + mixed: false, + }) + }) +}) + +describe('withOrgUnitSide', () => { + it('gives each source its levels, and the profile its org unit side', () => { + const profile = { + sources: [source('formA'), source(null)], + unknown: false, + reasons: [], + period: { types: ['Monthly'] }, + } + + expect(withOrgUnitSide(profile, { formA: { 4: 2 } })).toEqual({ + ...profile, + sources: [source('formA', { 4: 2 }), source(null)], + orgUnit: { levels: [4], entryLevel: 4, mixed: false }, + }) + expect(withOrgUnitSide(profile, {}).sources[0].orgUnitLevels).toEqual( + {} + ) + }) + + it('gives no levels to a program indicator placed anywhere', () => { + const placedAnywhere = { + dataSet: null, + program: { id: 'programAAA' }, + orgUnitField: 'REGISTRATION', + elements: [], + reportingRate: false, + } + + expect( + withOrgUnitSide( + { sources: [placedAnywhere] }, + { programAAA: { 4: 2 } } + ) + ).toEqual({ + sources: [placedAnywhere], + orgUnit: { levels: [], entryLevel: null, mixed: false }, + }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js b/src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js new file mode 100644 index 000000000..8779e79f2 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js @@ -0,0 +1,198 @@ +import { + aggregatesInto, + comparePeriodTypes, + getFixedPeriodOfTypeByDate, + getPeriodDates, + getPeriodRelation, + periodNestsIn, + toIsoDate, + widenToWholePeriods, +} from '../periodTypeRelations.js' + +describe('aggregatesInto', () => { + it.each([ + ['Monthly', 'Monthly', true], + ['Weekly', 'Monthly', true], + ['Daily', 'TwoYearly', true], + ['Monthly', 'FinancialApril', true], + ['Monthly', 'Weekly', false], + ['Yearly', 'Quarterly', false], + ['WeeklyWednesday', 'Weekly', false], + ['Weekly', 'WeeklyWednesday', false], + ['Yearly', 'FinancialApril', false], + ['Quarterly', 'QuarterlyNov', false], + ['Weekly', 'BiWeekly', true], + ['WeeklyWednesday', 'BiWeekly', true], + ])('%s data into %s queries: %s', (data, query, expected) => { + expect(aggregatesInto(data, query)).toBe(expected) + }) + + it('is null for an unknown type', () => { + expect(aggregatesInto('Hourly', 'Monthly')).toBeNull() + expect(aggregatesInto('Monthly', undefined)).toBeNull() + }) +}) + +describe('comparePeriodTypes', () => { + it('orders by frequency', () => { + expect(comparePeriodTypes('Weekly', 'Monthly')).toBeLessThan(0) + expect(comparePeriodTypes('Yearly', 'FinancialApril')).toBe(0) + expect(comparePeriodTypes('TwoYearly', 'Yearly')).toBeGreaterThan(0) + }) +}) + +describe('getPeriodDates', () => { + it.each([ + ['2025W1', '2024-12-30', '2025-01-05'], + ['2025WedW1', '2025-01-01', '2025-01-07'], + ['2025BiW1', '2024-12-30', '2025-01-12'], + ['202501', '2025-01-01', '2025-01-31'], + ['2025Q1', '2025-01-01', '2025-03-31'], + ['2025AprilS1', '2025-04-01', '2025-09-30'], + ['2025April', '2025-04-01', '2026-03-31'], + ['20250115', '2025-01-15', '2025-01-15'], + ])('%s: %s to %s', (periodId, startDate, endDate) => { + expect(getPeriodDates(periodId)).toEqual({ startDate, endDate }) + }) + + it.each([ + ['2025Nov', '2024-11-01', '2025-10-31'], + ['2025NovQ1', '2024-11-01', '2025-01-31'], + ['2025NovQ3', '2025-05-01', '2025-07-31'], + ['2025NovS1', '2024-11-01', '2025-04-30'], + ['2025NovS2', '2025-05-01', '2025-10-31'], + ])( + 'dates the November type %s as the server does', + (periodId, startDate, endDate) => { + expect(getPeriodDates(periodId)).toEqual({ startDate, endDate }) + expect(getPeriodDates(periodId, 'iso8601')).toEqual({ + startDate, + endDate, + }) + } + ) + + it('gives no dates for November types in other calendars', () => { + expect(getPeriodDates('2081Nov', 'nepali')).toBeNull() + }) + + it('gives dates in the calendar asked for', () => { + expect(getPeriodDates('2081W1', 'nepali')).toEqual({ + startDate: '2081-01-03', + endDate: '2081-01-09', + }) + }) + + it('is null for an id it cannot read', () => { + expect(getPeriodDates('LAST_12_MONTHS')).toBeNull() + expect(getPeriodDates('2025X1')).toBeNull() + }) +}) + +describe('getPeriodRelation', () => { + const jan = { startDate: '2025-01-01', endDate: '2025-01-31' } + const q1 = { startDate: '2025-01-01', endDate: '2025-03-31' } + const week1 = { startDate: '2024-12-30', endDate: '2025-01-05' } + const feb = { startDate: '2025-02-01', endDate: '2025-02-28' } + + it.each([ + [jan, jan, 'same'], + [jan, q1, 'within'], + [q1, jan, 'contains'], + [week1, jan, 'overlaps'], + [jan, feb, 'disjoint'], + [feb, jan, 'disjoint'], + ])('%j to %j: %s', (a, b, expected) => { + expect(getPeriodRelation(a, b)).toBe(expected) + }) +}) + +describe('getFixedPeriodOfTypeByDate', () => { + it('finds the period of a type that holds a date', () => { + expect( + getFixedPeriodOfTypeByDate('WeeklyWednesday', '2025-01-10') + ).toMatchObject({ startDate: '2025-01-08', endDate: '2025-01-14' }) + }) + + it.each([ + ['FinancialNov', '2025-01-08', '2025Nov', '2024-11-01'], + ['FinancialNov', '2024-11-01', '2025Nov', '2024-11-01'], + ['FinancialNov', '2024-10-31', '2024Nov', '2023-11-01'], + ['QuarterlyNov', '2025-01-08', '2025NovQ1', '2024-11-01'], + ['QuarterlyNov', '2025-10-31', '2025NovQ4', '2025-08-01'], + ['SixMonthlyNov', '2025-05-01', '2025NovS2', '2025-05-01'], + ])('gives %s periods the ids the server uses (%s)', (...args) => { + const [periodType, date, id, startDate] = args + + expect(getFixedPeriodOfTypeByDate(periodType, date)).toMatchObject({ + id, + startDate, + }) + }) + + it('is null for November types in other calendars', () => { + expect( + getFixedPeriodOfTypeByDate('QuarterlyNov', '2081-09-24', 'nepali') + ).toBeNull() + }) + + it('is null for a type without an ISO format', () => { + expect(getFixedPeriodOfTypeByDate('TwoYearly', '2025-01-10')).toBeNull() + }) + + it('is null for a date it cannot read', () => { + expect(getFixedPeriodOfTypeByDate('Monthly', 'not a date')).toBeNull() + }) +}) + +describe('widenToWholePeriods', () => { + it('widens to whole periods of the type', () => { + expect( + widenToWholePeriods(getPeriodDates('2025W2'), 'Monthly') + ).toEqual({ + startDate: '2025-01-01', + endDate: '2025-01-31', + }) + expect( + widenToWholePeriods(getPeriodDates('2025W1'), 'Monthly') + ).toEqual({ + startDate: '2024-12-01', + endDate: '2025-01-31', + }) + }) + + it('is null when it cannot tell', () => { + expect( + widenToWholePeriods(getPeriodDates('2025W2'), 'TwoYearly') + ).toBeNull() + }) +}) + +describe('periodNestsIn', () => { + it.each([ + ['2025Q1', 'Monthly', true], + ['2025', 'Quarterly', true], + ['2025W2', 'Daily', true], + ['2025BiW1', 'Weekly', true], + ['202501', 'Weekly', false], + ['2025', 'WeeklyWednesday', false], + ['2025April', 'Quarterly', true], + ['2025April', 'SixMonthly', false], + ['2025Q1', 'TwoYearly', null], + ])('%s on %s data: %s', (periodId, periodType, expected) => { + expect(periodNestsIn(getPeriodDates(periodId), periodType)).toBe( + expected + ) + }) +}) + +describe('toIsoDate', () => { + it('keeps ISO dates', () => { + expect(toIsoDate('2025-01-06')).toBe('2025-01-06') + expect(toIsoDate('2025-01-06', 'iso8601')).toBe('2025-01-06') + }) + + it('converts dates of other calendars', () => { + expect(toIsoDate('2081-01-03', 'nepali')).toBe('2024-04-15') + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/periodTypes.spec.js b/src/modules/dataItemProfile/__tests__/periodTypes.spec.js new file mode 100644 index 000000000..eab04ca5b --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/periodTypes.spec.js @@ -0,0 +1,155 @@ +import { + PERIOD_TYPES, + getCandidatePeriodTypes, + getPeriodTypeOfPeriodId, + getRelativePeriodTypeOptions, + isPeriodType, + isPeriodTypeSupported, + sortPeriodTypes, +} from '../periodTypes.js' + +describe('PERIOD_TYPES', () => { + it('lists the 24 server period types', () => { + expect(PERIOD_TYPES).toHaveLength(24) + expect(isPeriodType('TwoYearly')).toBe(true) + expect(isPeriodType('WEEKLY')).toBe(false) + }) +}) + +describe('sortPeriodTypes', () => { + it('sorts by frequency, then in server order', () => { + expect( + sortPeriodTypes(['Yearly', 'WeeklyWednesday', 'Monthly', 'Weekly']) + ).toEqual(['Weekly', 'WeeklyWednesday', 'Monthly', 'Yearly']) + }) +}) + +describe('getPeriodTypeOfPeriodId', () => { + it.each([ + ['20250115', 'Daily'], + ['2025W2', 'Weekly'], + ['2025WedW2', 'WeeklyWednesday'], + ['2025ThuW2', 'WeeklyThursday'], + ['2025FriW2', 'WeeklyFriday'], + ['2025SatW2', 'WeeklySaturday'], + ['2025SunW2', 'WeeklySunday'], + ['2025BiW2', 'BiWeekly'], + ['202501', 'Monthly'], + ['202501B', 'BiMonthly'], + ['2025Q1', 'Quarterly'], + ['2025NovQ1', 'QuarterlyNov'], + ['2025S1', 'SixMonthly'], + ['2025AprilS1', 'SixMonthlyApril'], + ['2025NovS1', 'SixMonthlyNov'], + ['2025', 'Yearly'], + ['2025Feb', 'FinancialFeb'], + ['2025April', 'FinancialApril'], + ['2025July', 'FinancialJuly'], + ['2025Aug', 'FinancialAug'], + ['2025Sep', 'FinancialSep'], + ['2025Oct', 'FinancialOct'], + ['2025Nov', 'FinancialNov'], + ])('%s is %s', (periodId, periodType) => { + expect(getPeriodTypeOfPeriodId(periodId)).toBe(periodType) + }) + + it('is null for anything else', () => { + expect(getPeriodTypeOfPeriodId('LAST_12_MONTHS')).toBeNull() + expect(getPeriodTypeOfPeriodId('2025X1')).toBeNull() + }) +}) + +describe('getCandidatePeriodTypes', () => { + it('takes a period type as it is', () => { + expect(getCandidatePeriodTypes('TwoYearly')).toEqual(['TwoYearly']) + }) + + it('reads a fixed period', () => { + expect(getCandidatePeriodTypes('2025WedW2')).toEqual([ + 'WeeklyWednesday', + ]) + }) + + it.each([ + ['LAST_7_DAYS', ['Daily']], + ['LAST_4_BIWEEKS', ['BiWeekly']], + ['LAST_12_MONTHS', ['Monthly']], + ['BIMONTHS_THIS_YEAR', ['BiMonthly']], + ['LAST_4_QUARTERS', ['Quarterly']], + ['LAST_2_SIXMONTHS', ['SixMonthly']], + ['LAST_5_YEARS', ['Yearly']], + ])('reads the relative period %s', (periodId, expected) => { + expect(getCandidatePeriodTypes(periodId)).toEqual(expected) + }) + + it('gives every weekly type for relative weeks, unless the setting is known', () => { + expect(getCandidatePeriodTypes('LAST_4_WEEKS')).toEqual([ + 'Weekly', + 'WeeklyWednesday', + 'WeeklyThursday', + 'WeeklyFriday', + 'WeeklySaturday', + 'WeeklySunday', + ]) + expect( + getCandidatePeriodTypes('LAST_4_WEEKS', { + weeklyPeriodType: 'WeeklySunday', + }) + ).toEqual(['WeeklySunday']) + }) + + it('gives every financial type for relative financial years, unless the setting is known', () => { + expect(getCandidatePeriodTypes('THIS_FINANCIAL_YEAR')).toHaveLength(7) + expect( + getCandidatePeriodTypes('THIS_FINANCIAL_YEAR', { + financialYearPeriodType: 'FinancialOct', + }) + ).toEqual(['FinancialOct']) + }) + + it('gives nothing for an id it cannot read', () => { + expect(getCandidatePeriodTypes('NEXT_CENTURY')).toEqual([]) + }) +}) + +describe('getRelativePeriodTypeOptions', () => { + it('maps the system settings to period types', () => { + expect( + getRelativePeriodTypeOptions({ + analyticsWeeklyStart: 'WEEKLY_WEDNESDAY', + analyticsFinancialYearStart: 'FINANCIAL_YEAR_OCTOBER', + }) + ).toEqual({ + weeklyPeriodType: 'WeeklyWednesday', + financialYearPeriodType: 'FinancialOct', + }) + }) + + it('leaves out unknown or missing settings', () => { + expect(getRelativePeriodTypeOptions()).toEqual({ + weeklyPeriodType: undefined, + financialYearPeriodType: undefined, + }) + }) +}) + +describe('isPeriodTypeSupported', () => { + it('leaves out QuarterlyNov before 2.41', () => { + expect( + isPeriodTypeSupported('QuarterlyNov', { major: 2, minor: 40 }) + ).toBe(false) + expect( + isPeriodTypeSupported('QuarterlyNov', { major: 2, minor: 41 }) + ).toBe(true) + expect( + isPeriodTypeSupported('QuarterlyNov', { major: 3, minor: 0 }) + ).toBe(true) + expect(isPeriodTypeSupported('Monthly', { major: 2, minor: 40 })).toBe( + true + ) + }) + + it('supports every type without a version', () => { + expect(isPeriodTypeSupported('QuarterlyNov')).toBe(true) + }) +}) diff --git a/src/modules/dataItemProfile/carriedValues.js b/src/modules/dataItemProfile/carriedValues.js new file mode 100644 index 000000000..02e1b3028 --- /dev/null +++ b/src/modules/dataItemProfile/carriedValues.js @@ -0,0 +1,153 @@ +import { + convertFromIso8601, + convertToIso8601, +} from '@dhis2/multi-calendar-dates' +import { getFixedPeriodOfTypeByDate } from './periodTypeRelations.js' + +/* How analytics answers FIRST and LAST (checked by the test tool on 2.40 to + * 2.44): a data period counts when it ended by the end of the period asked + * for, and the year in its id is one of the calendar years the request's + * periods touch. FIRST takes the earliest that counts, LAST the latest; none + * gives no value. So FIRST in July gives January's value, and LAST on + * 1 January gives nothing. */ + +const ISO_CALENDARS = ['gregory', 'iso8601'] + +// November types name the year they end in: 2025NovQ1 is November 2024 to January 2025 +const NAMED_BY_END_YEAR = ['QuarterlyNov', 'SixMonthlyNov', 'FinancialNov'] + +const MAX_STEPS = 20 + +const pad = (number, length = 2) => String(number).padStart(length, '0') + +const getYear = (date) => Number(date.slice(0, 4)) + +const shiftIsoDate = (isoDate, days) => { + const date = new Date(`${isoDate}T00:00:00Z`) + date.setUTCDate(date.getUTCDate() + days) + + return date.toISOString().slice(0, 10) +} + +const shiftDate = (date, days, calendar) => { + if (ISO_CALENDARS.includes(calendar)) { + return shiftIsoDate(date, days) + } + + const iso = convertToIso8601(date, calendar) + const shifted = shiftIsoDate( + `${pad(iso.year, 4)}-${pad(iso.month)}-${pad(iso.day)}`, + days + ) + const { year, eraYear, month, day } = convertFromIso8601(shifted, calendar) + + return `${pad(eraYear ?? year, 4)}-${pad(month)}-${pad(day)}` +} + +// The year in a data period's id, which places it in analytics' partitions +const getIdYear = (period, periodType) => + NAMED_BY_END_YEAR.includes(periodType) + ? getYear(period.endDate) + : Number(period.id.slice(0, 4)) + +const getLastPeriodEndingBy = (periodType, date, calendar) => { + const holding = getFixedPeriodOfTypeByDate(periodType, date, calendar) + + if (!holding || holding.endDate <= date) { + return holding + } + + return getFixedPeriodOfTypeByDate( + periodType, + shiftDate(holding.startDate, -1, calendar), + calendar + ) +} + +const getLatestCounting = ({ periodType, dates, years, calendar }) => { + let date = dates.endDate + + for (let step = 0; step < MAX_STEPS; step++) { + const period = getLastPeriodEndingBy(periodType, date, calendar) + + if (!period) { + return null + } + + const idYear = getIdYear(period, periodType) + + if (years.includes(idYear)) { + return period + } + + const lowerYears = years.filter((year) => year < idYear) + + if (!lowerYears.length) { + return null + } + + // Jump towards the next year that counts, one period at a time at most + const yearEnd = `${pad(Math.max(...lowerYears) + 1, 4)}-12-31` + const before = shiftDate(period.startDate, -1, calendar) + date = yearEnd < before ? yearEnd : before + } + + return null +} + +const getEarliestCounting = ({ periodType, dates, years, calendar }) => { + const firstYear = Math.min(...years) + let period = getFixedPeriodOfTypeByDate( + periodType, + `${pad(firstYear, 4)}-01-01`, + calendar + ) + + for (let step = 0; period && step < MAX_STEPS; step++) { + if (getIdYear(period, periodType) >= firstYear) { + return period.endDate <= dates.endDate ? period : null + } + + period = getFixedPeriodOfTypeByDate( + periodType, + shiftDate(period.endDate, 1, calendar), + calendar + ) + } + + return null +} + +/** + * The data period whose value analytics returns for FIRST or LAST data of + * `periodType`, in a period with `dates`, when the request touches the + * calendar `years`; null when there is none. + */ +export const getCarriedSource = ({ + periodAggregationType, + periodType, + dates, + years, + calendar = 'gregory', +}) => { + if (!years.length) { + return null + } + + const query = { periodType, dates, years, calendar } + + return periodAggregationType === 'FIRST' + ? getEarliestCounting(query) + : getLatestCounting(query) +} + +// The calendar years a period's dates fall in +export const getYearsTouched = ({ startDate, endDate }) => { + const years = [] + + for (let year = getYear(startDate); year <= getYear(endDate); year++) { + years.push(year) + } + + return years +} diff --git a/src/modules/dataItemProfile/compatibilityStatuses.js b/src/modules/dataItemProfile/compatibilityStatuses.js new file mode 100644 index 000000000..3a09ecd9b --- /dev/null +++ b/src/modules/dataItemProfile/compatibilityStatuses.js @@ -0,0 +1,31 @@ +export const COMPATIBILITY_FULL = 'full' +export const COMPATIBILITY_PARTIAL = 'partial' +export const COMPATIBILITY_NONE = 'none' +export const COMPATIBILITY_UNKNOWN = 'unknown' + +// The profile is unknown: see its reasons +export const REASON_PROFILE_UNKNOWN = 'PROFILE_UNKNOWN' + +/* An expression whose operand gives no value has none (a ratio without its + * denominator); one whose operand leaves values out is computed from + * incomplete data, and can be off either way */ +export const REASON_OPERAND_EMPTY = 'OPERAND_EMPTY' +export const REASON_OPERAND_PARTIAL = 'OPERAND_PARTIAL' + +export const OPERAND_REASONS = [REASON_OPERAND_EMPTY, REASON_OPERAND_PARTIAL] + +/** + * An expression's result, from its most severe operand's: with more than one + * operand, a none or partial result says so with OPERAND_EMPTY or + * OPERAND_PARTIAL, first. + */ +export const withOperandReason = (result, operandCount) => { + const reason = + operandCount > 1 && + { + [COMPATIBILITY_NONE]: REASON_OPERAND_EMPTY, + [COMPATIBILITY_PARTIAL]: REASON_OPERAND_PARTIAL, + }[result.status] + + return reason ? { ...result, reasons: [reason, ...result.reasons] } : result +} diff --git a/src/modules/dataItemProfile/expressionItems.js b/src/modules/dataItemProfile/expressionItems.js new file mode 100644 index 000000000..5b77640a6 --- /dev/null +++ b/src/modules/dataItemProfile/expressionItems.js @@ -0,0 +1,80 @@ +export const OPERAND_DATA_ELEMENT = 'DATA_ELEMENT' +export const OPERAND_REPORTING_RATE = 'REPORTING_RATE' +export const OPERAND_INDICATOR = 'INDICATOR' +export const OPERAND_PROGRAM_INDICATOR = 'PROGRAM_INDICATOR' +export const OPERAND_PROGRAM_DATA_ELEMENT = 'PROGRAM_DATA_ELEMENT' +export const OPERAND_PROGRAM_ATTRIBUTE = 'PROGRAM_ATTRIBUTE' +export const OPERAND_CONSTANT = 'CONSTANT' +export const OPERAND_ORG_UNIT_GROUP = 'ORG_UNIT_GROUP' +export const OPERAND_DAYS = 'DAYS' +export const OPERAND_UNKNOWN = 'UNKNOWN' + +const OPERAND_BY_PREFIX = { + '#': OPERAND_DATA_ELEMENT, + R: OPERAND_REPORTING_RATE, + N: OPERAND_INDICATOR, + I: OPERAND_PROGRAM_INDICATOR, + D: OPERAND_PROGRAM_DATA_ELEMENT, + A: OPERAND_PROGRAM_ATTRIBUTE, + C: OPERAND_CONSTANT, + OUG: OPERAND_ORG_UNIT_GROUP, +} + +// Operands whose value depends on data collected in periods +export const PERIOD_LIMITING_OPERANDS = [ + OPERAND_DATA_ELEMENT, + OPERAND_REPORTING_RATE, + OPERAND_INDICATOR, +] + +/* An operand (`#{de.coc}`, `R{ds.REPORTING_RATE}`, `[days]`…) and the + * functions chained after it (`.periodOffset(-1)`, `.aggregationType(LAST)`) */ +const OPERAND_REGEX = + /(?:(#|[A-Z]+)\{([^}]*)\}|\[days\])((?:\.[a-zA-Z]+\([^)]*\))*)/g +const FUNCTION_REGEX = /\.([a-zA-Z]+)\(([^)]*)\)/g + +const parseFunctions = (chain) => + [...chain.matchAll(FUNCTION_REGEX)].map(([, name, arg]) => ({ + name, + arg: arg.trim(), + })) + +// The id of the object behind the operand: `de` in `#{de.coc.aoc}`, `ds` in `R{ds.METRIC}` +const getObjectId = (type, content) => + [OPERAND_DATA_ELEMENT, OPERAND_REPORTING_RATE].includes(type) + ? content.split('.')[0] + : content + +const toOperand = ([token, prefix, content, chain]) => { + const functions = parseFunctions(chain) + const aggregationType = functions.find( + ({ name }) => name === 'aggregationType' + )?.arg + + if (prefix === undefined) { + return { type: OPERAND_DAYS, token, functions } + } + + const type = OPERAND_BY_PREFIX[prefix] ?? OPERAND_UNKNOWN + // A disaggregation (de.coc, de.coc.aoc); a wildcard (de.*) is the whole element + const isDisaggregation = + type === OPERAND_DATA_ELEMENT && + content.includes('.') && + !content.includes('*') + + return { + type, + id: getObjectId(type, content), + ...(isDisaggregation && { operand: content }), + token, + functions, + ...(aggregationType && { aggregationType }), + } +} + +/** + * Every operand of an indicator or expression dimension item expression, in + * order, with the functions chained after it. + */ +export const getExpressionItems = (expression = '') => + [...(expression ?? '').matchAll(OPERAND_REGEX)].map(toOperand) diff --git a/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js b/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js new file mode 100644 index 000000000..00c9bdedb --- /dev/null +++ b/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js @@ -0,0 +1,320 @@ +import { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + OPERAND_REASONS, + REASON_PROFILE_UNKNOWN, + withOperandReason, +} from './compatibilityStatuses.js' +import { getOrgUnitTargets, readOrgUnitSelection } from './orgUnitSelection.js' +import { getSourceId, isPlacedAnywhere, isProgramSource } from './sources.js' + +// No data from some or all of the places +export const REASON_NOT_ASSIGNED = 'NOT_ASSIGNED' +export const REASON_BELOW_COLLECTION = 'BELOW_COLLECTION' +export const REASON_AGGREGATION_LEVEL = 'AGGREGATION_LEVEL' +// Full, but placed by another org unit than the program's: anywhere +export const REASON_ORG_UNIT_FIELD = 'ORG_UNIT_FIELD' +// Full, but collected at only some of the units +export const REASON_PARTLY_ASSIGNED = 'PARTLY_ASSIGNED' +// Can't be told +export const REASON_UNKNOWN_ORG_UNIT = 'UNKNOWN_ORG_UNIT' +export const REASON_EVENT_DATA = 'EVENT_DATA' + +export const ORG_UNIT_REASON_ORDER = [ + ...OPERAND_REASONS, + REASON_NOT_ASSIGNED, + REASON_BELOW_COLLECTION, + REASON_AGGREGATION_LEVEL, + REASON_PARTLY_ASSIGNED, + REASON_ORG_UNIT_FIELD, + REASON_UNKNOWN_ORG_UNIT, + REASON_EVENT_DATA, +] + +// Most severe first: an expression needs all its operands +const SEVERITY = [ + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + COMPATIBILITY_FULL, +] + +const unionOfReasons = (results) => + ORG_UNIT_REASON_ORDER.filter((reason) => + results.some(({ reasons }) => reasons.includes(reason)) + ) + +const pickBy = (order, results) => + order + .map((status) => results.find((result) => result.status === status)) + .find(Boolean) + +const sumCoverage = (results) => { + const coverages = results.map(({ coverage }) => coverage).filter(Boolean) + + return coverages.length + ? { + assigned: coverages.reduce( + (sum, { assigned }) => sum + assigned, + 0 + ), + total: coverages.reduce((sum, { total }) => sum + total, 0), + level: Math.max(...coverages.map(({ level }) => level)), + } + : null +} + +/* Analytics nulls the levels up to each aggregation level for values entered + * below it (AggregationLevelsHelper): a value entered at `entryLevel` can't + * reach `level` when an aggregation level lies between them */ +const isStopped = (entryLevel, level, aggregationLevels) => + aggregationLevels.some( + (aggregationLevel) => + level <= aggregationLevel && aggregationLevel < entryLevel + ) + +/* One data set at one target (a unit, and the level asked under it), from + * its assignment counts: where data can be entered. Nothing is split down to + * lower levels, so data entered above the level asked can't fill it; below, + * it adds up, and the deepest level assigned says how much of the place it + * covers. A data set entered at the level asked elsewhere, but not here: + * NOT_ASSIGNED. Only above it: BELOW_COLLECTION. */ +const judgeDataSet = ({ + dataSetCounts, + assignedLevels = {}, + aggregationLevels = [], + totals, + level, +}) => { + const { byLevel = {}, ancestors = 0 } = dataSetCounts ?? {} + const levelsWith = (counts) => + Object.keys(counts) + .map(Number) + .filter((assignedLevel) => counts[assignedLevel] > 0) + const assignedHere = levelsWith(byLevel).filter( + (assignedLevel) => assignedLevel >= level + ) + const entryLevels = assignedHere.filter( + (entryLevel) => !isStopped(entryLevel, level, aggregationLevels) + ) + + if (assignedHere.length && !entryLevels.length) { + return { + status: COMPATIBILITY_NONE, + reasons: [REASON_AGGREGATION_LEVEL], + coverage: null, + } + } + + if (!entryLevels.length) { + const enteredHereElsewhere = levelsWith(assignedLevels).some( + (assignedLevel) => assignedLevel >= level + ) + const enteredAbove = + ancestors > 0 || + levelsWith(byLevel).some((assignedLevel) => assignedLevel < level) + + return { + status: COMPATIBILITY_NONE, + reasons: [ + enteredAbove && !enteredHereElsewhere + ? REASON_BELOW_COLLECTION + : REASON_NOT_ASSIGNED, + ], + coverage: null, + } + } + + const deepest = Math.max(...entryLevels) + const coverage = { + assigned: byLevel[deepest], + total: totals[deepest] ?? byLevel[deepest], + level: deepest, + } + + // Units it isn't assigned to don't collect it: nothing is left out + return { + status: COMPATIBILITY_FULL, + reasons: + coverage.assigned < coverage.total ? [REASON_PARTLY_ASSIGNED] : [], + coverage, + } +} + +// A program indicator placing values by another org unit fits any place +const PLACED_ANYWHERE = { + status: COMPATIBILITY_FULL, + reasons: [REASON_ORG_UNIT_FIELD], + coverage: null, +} + +// Values that exist but can't reach the level asked +const LEFT_OUT_REASONS = [REASON_BELOW_COLLECTION, REASON_AGGREGATION_LEVEL] + +const isLeftOut = ({ reasons }) => + reasons.some((reason) => LEFT_OUT_REASONS.includes(reason)) + +/* An element over its data sets. One not assigned there leaves nothing out; + * one whose values can't reach the level asked (entered above, or stopped by + * aggregation levels) leaves them out, so with another that fills the place, + * the value is partial. */ +const combineDataSets = (bySource) => { + const filling = bySource.filter( + ({ status }) => status === COMPATIBILITY_FULL + ) + const reasons = unionOfReasons(bySource) + const leftOut = bySource.some(isLeftOut) + + if (!filling.length) { + return { + status: COMPATIBILITY_NONE, + reasons: leftOut + ? reasons.filter((reason) => LEFT_OUT_REASONS.includes(reason)) + : [REASON_NOT_ASSIGNED], + coverage: null, + } + } + + return { + status: leftOut ? COMPATIBILITY_PARTIAL : COMPATIBILITY_FULL, + reasons: reasons.filter((reason) => reason !== REASON_NOT_ASSIGNED), + coverage: filling + .map(({ coverage }) => coverage) + .sort((a, b) => b.assigned / b.total - a.assigned / a.total)[0], + } +} + +/* The item's operands: each element over its data sets (where any of them + * is assigned), with its aggregation levels, each reporting rate (where its + * data set is), and each program (where it is assigned). */ +const getOperands = (profile) => { + const elements = new Map() + + profile.sources.forEach(({ elements: sourceElements }) => + sourceElements.forEach((element) => elements.set(element.id, element)) + ) + + return [ + ...[...elements.values()].map(({ id, aggregationLevels }) => ({ + sources: profile.sources.filter(({ elements: sourceElements }) => + sourceElements.some((element) => element.id === id) + ), + aggregationLevels, + })), + ...profile.sources + .filter((source) => source.reportingRate || isProgramSource(source)) + .map((source) => ({ sources: [source] })), + ] +} + +const judgeTarget = (operands, counts) => { + const results = operands.map(({ sources, aggregationLevels }) => { + const bySource = sources.map((source) => + isPlacedAnywhere(source) + ? PLACED_ANYWHERE + : judgeDataSet({ + dataSetCounts: counts.sources?.[getSourceId(source)], + assignedLevels: + counts.assignedLevels?.[getSourceId(source)], + aggregationLevels, + totals: counts.totals ?? {}, + level: counts.level, + }) + ) + return combineDataSets(bySource) + }) + const worst = pickBy(SEVERITY, results) + + return ( + worst && { + ...withOperandReason( + { ...worst, reasons: unionOfReasons(results) }, + operands.length + ), + coverage: worst.coverage, + } + ) +} + +const unknownResult = (id, reason) => ({ + id, + status: COMPATIBILITY_UNKNOWN, + reasons: [reason], + coverage: null, +}) + +const judgeItem = (item, { operands, boundaries, coverage }) => { + const targets = getOrgUnitTargets(item, boundaries, coverage) + + if (!targets) { + return unknownResult(item.id, REASON_UNKNOWN_ORG_UNIT) + } + + const countsOf = ({ key, unitId }) => coverage.counts[key ?? unitId] + // Boundaries a group has no member under add nothing + const results = targets + .filter( + (target) => + !target.group || countsOf(target)?.totals?.[target.level] > 0 + ) + .map((target) => + judgeTarget(operands, { + ...countsOf(target), + assignedLevels: coverage.assignedLevels, + level: target.level, + }) + ) + const worst = pickBy(SEVERITY, results) + + return { + id: item.id, + status: worst?.status ?? COMPATIBILITY_NONE, + reasons: worst ? unionOfReasons(results) : [REASON_NOT_ASSIGNED], + coverage: sumCoverage(results), + } +} + +/** + * Whether the places of an org unit selection suit the item, from where its + * data sets are assigned (fetchOrgUnitCoverage): one result per item of the + * selection, with the same statuses as for periods. Data entered above the + * level asked: none, BELOW_COLLECTION. Not assigned there: none, + * NOT_ASSIGNED. Stopped by the element's aggregation levels: none, + * AGGREGATION_LEVEL. Assigned to only some of the units at the deepest level + * entered: full, since the others don't collect it, with PARTLY_ASSIGNED and + * the counts (`coverage`). + * + * An element over several data sets is fully compatible where one is + * assigned, and partially when another's values can't reach the place: they + * are left out. A group is judged at each level its members are at, as the + * units under them add up. Event data and unknown units can't be told. + */ +export const getDataItemOrgUnitCompatibility = ( + profile, + orgUnits = [], + coverage +) => { + const { items, boundaries } = readOrgUnitSelection(orgUnits) + + if (profile.unknown) { + return items.map(({ id }) => unknownResult(id, REASON_PROFILE_UNKNOWN)) + } + + if (!profile.sources.length) { + return items.map(({ id }) => unknownResult(id, REASON_EVENT_DATA)) + } + + if (!coverage) { + return items.map(({ id }) => unknownResult(id, REASON_UNKNOWN_ORG_UNIT)) + } + + return items.map((item) => + judgeItem(item, { + operands: getOperands(profile), + boundaries, + coverage, + }) + ) +} diff --git a/src/modules/dataItemProfile/getDataItemProfile.js b/src/modules/dataItemProfile/getDataItemProfile.js new file mode 100644 index 000000000..886ee98e7 --- /dev/null +++ b/src/modules/dataItemProfile/getDataItemProfile.js @@ -0,0 +1,375 @@ +import { + DIMENSION_TYPE_DATA_ELEMENT, + DIMENSION_TYPE_DATA_ELEMENT_OPERAND, + DIMENSION_TYPE_EVENT_DATA_ITEM, + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, + DIMENSION_TYPE_INDICATOR, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, + DIMENSION_TYPE_PROGRAM_INDICATOR, +} from '../dataTypes.js' +import { + OPERAND_DATA_ELEMENT, + OPERAND_INDICATOR, + OPERAND_PROGRAM_ATTRIBUTE, + OPERAND_PROGRAM_DATA_ELEMENT, + OPERAND_PROGRAM_INDICATOR, + OPERAND_REPORTING_RATE, + OPERAND_UNKNOWN, + getExpressionItems, +} from './expressionItems.js' +import { withOrgUnitSide } from './orgUnitSide.js' +import { aggregatesInto } from './periodTypeRelations.js' +import { PERIOD_TYPES, isPeriodType, sortPeriodTypes } from './periodTypes.js' +import { isBoundedOrgUnitField } from './sources.js' + +export const DIMENSION_TYPE_REPORTING_RATE = 'REPORTING_RATE' + +export const PERIOD_AGGREGATION_AVERAGE = 'AVERAGE' +export const PERIOD_AGGREGATION_FIRST = 'FIRST' +export const PERIOD_AGGREGATION_LAST = 'LAST' + +/* How each aggregation type aggregates over time, when it differs from the + * type itself (dhis2-core AnalyticsAggregationType.fromAggregationType) */ +const PERIOD_AGGREGATION_BY_AGGREGATION_TYPE = { + AVERAGE_SUM_ORG_UNIT: 'AVERAGE', + LAST_AVERAGE_ORG_UNIT: 'LAST', + LAST_LAST_ORG_UNIT: 'LAST', + LAST_IN_PERIOD_AVERAGE_ORG_UNIT: 'LAST_IN_PERIOD', + FIRST_AVERAGE_ORG_UNIT: 'FIRST', + FIRST_FIRST_ORG_UNIT: 'FIRST', + MAX_SUM_ORG_UNIT: 'MAX', + MIN_SUM_ORG_UNIT: 'MIN', +} + +export const getPeriodAggregationType = (aggregationType) => + PERIOD_AGGREGATION_BY_AGGREGATION_TYPE[aggregationType] ?? aggregationType + +export const NOT_AGGREGATABLE_AGGREGATION_TYPES = ['NONE'] + +export const REASON_MISSING_METADATA = 'MISSING_METADATA' +export const REASON_NO_DATA_SET = 'NO_DATA_SET' +export const REASON_NOT_AGGREGATABLE = 'NOT_AGGREGATABLE' +export const REASON_UNKNOWN_OPERAND = 'UNKNOWN_OPERAND' +export const REASON_UNKNOWN_PERIOD_TYPE = 'UNKNOWN_PERIOD_TYPE' +export const REASON_UNSUPPORTED_ITEM_TYPE = 'UNSUPPORTED_ITEM_TYPE' + +/* Event and tracker items named by their program and an element or + * attribute: program.element, program.element.option */ +const PROGRAM_PREFIXED_ITEM_TYPES = [ + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, + DIMENSION_TYPE_EVENT_DATA_ITEM, +] + +const createCollector = () => ({ + sources: new Map(), + reasons: [], + visited: new Set(), +}) + +const checkPeriodType = (collector, id, periodType) => { + if (!isPeriodType(periodType)) { + collector.reasons.push({ + code: REASON_UNKNOWN_PERIOD_TYPE, + id, + periodType, + }) + } +} + +// One source per data set; an element in no data set gets a source of its own +const getSource = (collector, dataSet, elementId) => { + const key = dataSet + ? `dataSet:${dataSet.id ?? dataSet.periodType}` + : `element:${elementId}` + + if (!collector.sources.has(key)) { + collector.sources.set(key, { + dataSet: dataSet + ? { id: dataSet.id, periodType: dataSet.periodType } + : null, + elements: [], + reportingRate: false, + }) + } + + return collector.sources.get(key) +} + +const addElementToSource = (source, element) => { + const isListed = source.elements.some( + ({ id, operand, aggregationType }) => + id === element.id && + operand === element.operand && + aggregationType === element.aggregationType + ) + + if (!isListed) { + source.elements.push(element) + } +} + +const addDataElement = ( + collector, + metadata, + { id, operand, aggregationType: aggregationTypeOverride } +) => { + const dataElement = metadata.dataElements?.[id] + + if (!dataElement) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + const aggregationType = + aggregationTypeOverride ?? dataElement.aggregationType + const dataSets = dataElement.dataSets ?? [] + /* `operand`: the disaggregation analytics is asked for (de.coc), if any. + * `aggregationLevels`: the org unit levels values entered below stop at */ + const element = { + id, + ...(operand && { operand }), + aggregationType, + periodAggregationType: getPeriodAggregationType(aggregationType), + ...(dataElement.aggregationLevels?.length && { + aggregationLevels: dataElement.aggregationLevels, + }), + } + + if (NOT_AGGREGATABLE_AGGREGATION_TYPES.includes(aggregationType)) { + collector.reasons.push({ code: REASON_NOT_AGGREGATABLE, id }) + } + + if (!dataSets.length) { + collector.reasons.push({ code: REASON_NO_DATA_SET, id }) + addElementToSource(getSource(collector, null, id), element) + } + + dataSets.forEach((dataSet) => { + checkPeriodType(collector, id, dataSet.periodType) + addElementToSource(getSource(collector, dataSet), element) + }) +} + +/* A program is a source of its own: events and enrollments are placed by + * their own dates, so it has no period type, and by the org units it's + * assigned to */ +const addProgram = (collector, metadata, { id, orgUnitField }) => { + if (!metadata.programs?.[id]) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + // Values placed by another org unit than the program's are a source of their own + const placedAnywhere = !isBoundedOrgUnitField(orgUnitField) + const key = placedAnywhere + ? `program:${id}:${orgUnitField}` + : `program:${id}` + + if (!collector.sources.has(key)) { + collector.sources.set(key, { + dataSet: null, + program: { id }, + ...(placedAnywhere && { orgUnitField }), + elements: [], + reportingRate: false, + }) + } +} + +const addProgramIndicator = (collector, metadata, id) => { + const { program, orgUnitField } = metadata.programIndicators?.[id] ?? {} + + if (!program) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + addProgram(collector, metadata, { id: program, orgUnitField }) +} + +// The program of program.element or program.attribute, if the id names one +const addPrefixedProgram = (collector, metadata, id) => { + if (id.includes('.')) { + addProgram(collector, metadata, { id: id.split('.')[0] }) + } +} + +const addDataSet = (collector, metadata, id) => { + const periodType = metadata.dataSets?.[id]?.periodType + + if (!periodType) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + checkPeriodType(collector, id, periodType) + getSource(collector, { id, periodType }).reportingRate = true +} + +const addExpression = (collector, metadata, expression) => { + getExpressionItems(expression).forEach((operand) => { + switch (operand.type) { + case OPERAND_DATA_ELEMENT: + addDataElement(collector, metadata, operand) + break + case OPERAND_REPORTING_RATE: + addDataSet(collector, metadata, operand.id) + break + case OPERAND_INDICATOR: + addIndicator(collector, metadata, operand.id) + break + case OPERAND_PROGRAM_INDICATOR: + addProgramIndicator(collector, metadata, operand.id) + break + case OPERAND_PROGRAM_DATA_ELEMENT: + case OPERAND_PROGRAM_ATTRIBUTE: + addPrefixedProgram(collector, metadata, operand.id) + break + case OPERAND_UNKNOWN: + collector.reasons.push({ + code: REASON_UNKNOWN_OPERAND, + token: operand.token, + }) + break + default: + // Constants, org unit groups and days have no source + } + }) +} + +const addIndicator = (collector, metadata, id) => { + // Nested indicators (N{}) can refer to each other + if (collector.visited.has(id)) { + return + } + collector.visited.add(id) + + const indicator = metadata.indicators?.[id] + + if (!indicator) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + addExpression(collector, metadata, indicator.numerator) + addExpression(collector, metadata, indicator.denominator) +} + +const addExpressionDimensionItem = (collector, metadata, id) => { + const expression = metadata.expressionDimensionItems?.[id]?.expression + + if (expression === undefined) { + collector.reasons.push({ code: REASON_MISSING_METADATA, id }) + return + } + + addExpression(collector, metadata, expression) +} + +const collectSources = ({ id, dimensionItemType }, metadata) => { + const collector = createCollector() + + switch (dimensionItemType) { + case DIMENSION_TYPE_DATA_ELEMENT: + case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: + addDataElement(collector, metadata, { + id: id.split('.')[0], + ...(id.includes('.') && { operand: id }), + }) + break + case DIMENSION_TYPE_REPORTING_RATE: + addDataSet(collector, metadata, id.split('.')[0]) + break + case DIMENSION_TYPE_INDICATOR: + addIndicator(collector, metadata, id) + break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + addExpressionDimensionItem(collector, metadata, id) + break + case DIMENSION_TYPE_PROGRAM_INDICATOR: + addProgramIndicator(collector, metadata, id) + break + default: + if (PROGRAM_PREFIXED_ITEM_TYPES.includes(dimensionItemType)) { + addPrefixedProgram(collector, metadata, id) + } else { + collector.reasons.push({ + code: REASON_UNSUPPORTED_ITEM_TYPE, + id, + dimensionItemType, + }) + } + } + + return collector +} + +/* The shortest query type that every type aggregates into: the longest of + * them when they nest, the next type up when two have the same order (Monday + * and Wednesday weeks: BiWeekly) */ +const getFinestQueryPeriodType = (periodTypes) => + sortPeriodTypes(PERIOD_TYPES).find((queryPeriodType) => + periodTypes.every((periodType) => + aggregatesInto(periodType, queryPeriodType) + ) + ) ?? null + +const unique = (values) => [...new Set(values)] + +// Averaged values are repeated into any period: they never go missing +export const isAveraged = ({ periodAggregationType }) => + periodAggregationType === PERIOD_AGGREGATION_AVERAGE + +// The source's period type, or null when it has no data set or an unknown type +export const getSourcePeriodType = ({ dataSet }) => + isPeriodType(dataSet?.periodType) ? dataSet.periodType : null + +const getPeriodTypes = (sources) => + sortPeriodTypes(unique(sources.map(getSourcePeriodType).filter(Boolean))) + +/* The profile's period side. `finest` is the shortest type at which every + * value is measured directly: shorter ones get averaged or carried values, or + * none (see getDataItemProfileCompatibility). */ +export const getPeriodSide = (sources) => { + const types = getPeriodTypes(sources) + + return { + types, + finest: types.length ? getFinestQueryPeriodType(types) : null, + mixed: types.length > 1, + } +} + +/** + * The profile of a data item, from its metadata: how and where it is + * collected. `sources` has one entry per data set it is collected in, with + * the item's elements in it (a reporting rate is its data set). The `period` + * side says which period types they are collected at, and `period.finest` + * the shortest type at which every value is measured directly, or null when + * nothing is collected by period (event data). Missing metadata makes the + * item `unknown`, with the `reasons`; it is never guessed. + * + * With the data sets' assigned units per level in the metadata + * (`dataSetOrgUnitLevels`, fetched by default), the profile also has an + * `orgUnit` side: the levels its data sets are assigned at (withOrgUnitSide). + */ +export const getDataItemProfile = (item, metadata = {}) => { + const collector = collectSources(item, metadata) + const sources = [...collector.sources.values()] + const profile = { + sources, + unknown: collector.reasons.length > 0, + reasons: collector.reasons, + period: getPeriodSide(sources), + } + + return metadata.dataSetOrgUnitLevels + ? withOrgUnitSide(profile, metadata.dataSetOrgUnitLevels) + : profile +} diff --git a/src/modules/dataItemProfile/getDataItemProfileCompatibility.js b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js new file mode 100644 index 000000000..a4c022ce4 --- /dev/null +++ b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js @@ -0,0 +1,398 @@ +import { getCarriedSource, getYearsTouched } from './carriedValues.js' +import { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + OPERAND_REASONS, + REASON_PROFILE_UNKNOWN, + withOperandReason, +} from './compatibilityStatuses.js' +import { + getDataItemOrgUnitCompatibility, + ORG_UNIT_REASON_ORDER, +} from './getDataItemOrgUnitCompatibility.js' +import { + PERIOD_AGGREGATION_AVERAGE, + PERIOD_AGGREGATION_FIRST, + PERIOD_AGGREGATION_LAST, + getSourcePeriodType, +} from './getDataItemProfile.js' +import { + aggregatesInto, + getFixedPeriodOfTypeByDate, + getPeriodDates, + periodNestsIn, +} from './periodTypeRelations.js' +import { + getCandidatePeriodTypes, + getFrequencyOrder, + getPeriodTypeOfPeriodId, + isPeriodTypeSupported, +} from './periodTypes.js' + +export { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, + REASON_PROFILE_UNKNOWN, +} from './compatibilityStatuses.js' + +// A value, but not measured for the period +export const REASON_AVERAGED = 'AVERAGED' +export const REASON_CARRIED = 'CARRIED' +// No real value from some or all of the data +export const REASON_SHORTER = 'SHORTER' +export const REASON_OTHER_TYPE = 'OTHER_TYPE' +export const REASON_REPORTING_RATE = 'REPORTING_RATE' +export const REASON_NOTHING_TO_CARRY = 'NOTHING_TO_CARRY' +// Can't tell +export const REASON_UNKNOWN_PERIOD = 'UNKNOWN_PERIOD' +export const REASON_SETTING_MISSING = 'SETTING_MISSING' +export const REASON_UNSUPPORTED_VERSION = 'UNSUPPORTED_VERSION' + +const REASON_ORDER = [ + ...OPERAND_REASONS, + REASON_SHORTER, + REASON_OTHER_TYPE, + REASON_REPORTING_RATE, + REASON_NOTHING_TO_CARRY, + REASON_AVERAGED, + REASON_CARRIED, + REASON_PROFILE_UNKNOWN, + REASON_UNKNOWN_PERIOD, + REASON_SETTING_MISSING, + REASON_UNSUPPORTED_VERSION, + ...ORG_UNIT_REASON_ORDER.filter( + (reason) => !OPERAND_REASONS.includes(reason) + ), +] + +// Most severe first +const SEVERITY = [ + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + COMPATIBILITY_FULL, +] + +const result = (status, reasons = []) => ({ status, reasons }) + +const getMostSevere = (statuses) => + SEVERITY.find((status) => statuses.includes(status)) ?? null + +const unionOfReasons = (results) => + REASON_ORDER.filter((reason) => + results.some(({ reasons }) => reasons.includes(reason)) + ) + +// The most severe status, with every reason +const combine = (results) => + result( + getMostSevere(results.map(({ status }) => status)) ?? + COMPATIBILITY_FULL, + unionOfReasons(results) + ) + +const getMissingReason = (dataPeriodType, queryPeriodType) => + getFrequencyOrder(queryPeriodType) < getFrequencyOrder(dataPeriodType) + ? REASON_SHORTER + : REASON_OTHER_TYPE + +/* FIRST and LAST data, by analytics' carry rule (carriedValues.js): the + * value of a data period inside the period, of one before it, or none. It can + * only be told for fixed periods in a selection of fixed periods, since every + * period of the request decides which data periods count. */ +const getFirstOrLastResult = (element, dataPeriodType, query) => { + const canDate = + query.dates && + query.years && + getFixedPeriodOfTypeByDate( + dataPeriodType, + query.dates.endDate, + query.calendar + ) + + if (!canDate) { + const carries = + element.periodAggregationType === PERIOD_AGGREGATION_FIRST || + !aggregatesInto(dataPeriodType, query.periodType) + + return carries + ? result(COMPATIBILITY_FULL, [REASON_CARRIED]) + : result(COMPATIBILITY_FULL) + } + + const source = getCarriedSource({ + periodAggregationType: element.periodAggregationType, + periodType: dataPeriodType, + dates: query.dates, + years: query.years, + calendar: query.calendar, + }) + + if (!source) { + return result(COMPATIBILITY_NONE, [REASON_NOTHING_TO_CARRY]) + } + + return source.startDate >= query.dates.startDate + ? result(COMPATIBILITY_FULL) + : result(COMPATIBILITY_FULL, [REASON_CARRIED]) +} + +/* One element of one data set, asked for one query. When the data can't add + * up into the period, averaged values are repeated into it, and other data + * gives none. FIRST and LAST follow their own rule. */ +const getElementResult = (element, dataPeriodType, query) => { + if ( + element.periodAggregationType === PERIOD_AGGREGATION_FIRST || + element.periodAggregationType === PERIOD_AGGREGATION_LAST + ) { + return getFirstOrLastResult(element, dataPeriodType, query) + } + + if (aggregatesInto(dataPeriodType, query.periodType)) { + return result(COMPATIBILITY_FULL) + } + + return element.periodAggregationType === PERIOD_AGGREGATION_AVERAGE + ? result(COMPATIBILITY_FULL, [REASON_AVERAGED]) + : result(COMPATIBILITY_NONE, [ + getMissingReason(dataPeriodType, query.periodType), + ]) +} + +// A reporting rate asked for a shorter period gives a meaningless value +const getReportingRateResult = (dataPeriodType, queryPeriodType) => + aggregatesInto(dataPeriodType, queryPeriodType) + ? result(COMPATIBILITY_FULL) + : result(COMPATIBILITY_NONE, [REASON_REPORTING_RATE]) + +const getSourceResult = (source, query) => { + const dataPeriodType = getSourcePeriodType(source) + const results = source.elements.map((element) => + getElementResult(element, dataPeriodType, query) + ) + + if (source.reportingRate) { + results.push(getReportingRateResult(dataPeriodType, query.periodType)) + } + + return combine(results) +} + +/* The values of one element over its data sets add up: some missing is + * partial */ +const combineDataSets = (results) => { + const statuses = results.map(({ status }) => status) + const reasons = unionOfReasons(results) + + if (statuses.every((status) => status === COMPATIBILITY_NONE)) { + return result(COMPATIBILITY_NONE, reasons) + } + + return statuses.includes(COMPATIBILITY_NONE) + ? result(COMPATIBILITY_PARTIAL, reasons) + : result(COMPATIBILITY_FULL, reasons) +} + +/* The item's operands: each element over its data sets, and each reporting + * rate. An expression needs them all: the most severe one decides. */ +const getItemResult = (profile, query) => { + const elements = new Map() + const operands = [] + + profile.sources.forEach((source) => { + const dataPeriodType = getSourcePeriodType(source) + + source.elements.forEach((element) => { + const key = `${element.id}:${element.aggregationType}` + const results = elements.get(key) ?? [] + + results.push(getElementResult(element, dataPeriodType, query)) + elements.set(key, results) + }) + + if (source.reportingRate) { + operands.push( + getReportingRateResult(dataPeriodType, query.periodType) + ) + } + }) + + elements.forEach((results) => operands.push(combineDataSets(results))) + + return withOperandReason(combine(operands), operands.length) +} + +const isSameResult = (a, b) => + a.status === b.status && a.reasons.join() === b.reasons.join() + +/* A relative period can be of several types: a result holds only when they + * all agree. A type the server version can't answer gives unknown. */ +const agreeOn = (queries, getResult) => { + const results = queries.map((query) => + query.supported + ? getResult(query) + : result(COMPATIBILITY_UNKNOWN, [REASON_UNSUPPORTED_VERSION]) + ) + + return results.every((candidate) => isSameResult(candidate, results[0])) + ? results[0] + : result(COMPATIBILITY_UNKNOWN, [REASON_SETTING_MISSING]) +} + +// Whether the period starts and ends on the edges of the data's own periods +const getAlignsWithData = (profile, { periodType, dates, calendar }) => { + const dataPeriodTypes = profile.sources + .map(getSourcePeriodType) + .filter((dataPeriodType) => aggregatesInto(dataPeriodType, periodType)) + + if (!dates || !dataPeriodTypes.length) { + return null + } + + const aligned = dataPeriodTypes.map((dataPeriodType) => + periodNestsIn(dates, dataPeriodType, calendar) + ) + + if (aligned.includes(false)) { + return false + } + + return aligned.includes(null) ? null : true +} + +const getDataSetId = ({ dataSet }) => dataSet?.id ?? null + +/* The calendar years the selection's periods touch, as one request would, or + * null when a period has no dates (a relative period, a period type) */ +const getSelectionYears = (periods, calendar) => { + const dates = periods.map((period) => + getPeriodTypeOfPeriodId(period) + ? getPeriodDates(period, calendar) + : null + ) + + if (!dates.length || dates.includes(null)) { + return null + } + + return [...new Set(dates.flatMap(getYearsTouched))].sort((a, b) => a - b) +} + +const getUnknownPeriodResult = (profile, { period, periodTypes, reason }) => ({ + id: period, + periodTypes, + ...result(COMPATIBILITY_UNKNOWN, [reason]), + alignsWithData: null, + sources: profile.sources.map((source) => ({ + dataSetId: getDataSetId(source), + ...result(COMPATIBILITY_UNKNOWN, [reason]), + })), +}) + +const getPeriodResult = (profile, period, options) => { + const periodTypes = getCandidatePeriodTypes(period, options) + + if (profile.unknown) { + return getUnknownPeriodResult(profile, { + period, + periodTypes, + reason: REASON_PROFILE_UNKNOWN, + }) + } + + if (!periodTypes.length) { + return getUnknownPeriodResult(profile, { + period, + periodTypes, + reason: REASON_UNKNOWN_PERIOD, + }) + } + + const dates = getPeriodTypeOfPeriodId(period) + ? getPeriodDates(period, options.calendar) + : null + const queries = periodTypes.map((periodType) => ({ + periodType, + dates, + years: options.selectionYears, + calendar: options.calendar, + supported: isPeriodTypeSupported(periodType, options.serverVersion), + })) + + return { + id: period, + periodTypes, + ...agreeOn(queries, (query) => getItemResult(profile, query)), + alignsWithData: + queries.length === 1 + ? getAlignsWithData(profile, queries[0]) + : null, + sources: profile.sources.map((source) => ({ + dataSetId: getDataSetId(source), + ...agreeOn(queries, (query) => getSourceResult(source, query)), + })), + } +} + +/** + * Whether a selection suits a data item, from its getDataItemProfile: for + * each period, whether analytics will return the item's values. + * + * The compatibility status is `full`, `partial`, `none` or `unknown`: + * compatible with all, some or none of the item's data sets. `reasons` say + * why, and on a full result whether values are averaged or carried + * rather than measured for the period. Results are given per period, per + * source (aligned with `profile.sources`) and overall (the most severe, with + * every reason). + * + * `selection.periods` are fixed ids, relative ids or period types. `options` + * sets the type of relative weeks and financial years (`weeklyPeriodType`, + * `financialYearPeriodType`), the `calendar` for dates, and the + * `serverVersion` ({ major, minor }), since some versions can't answer some + * period types. The periods are taken as one request: for FIRST and LAST data, + * the years they touch decide which data periods count (other items of the + * request, like a `.periodOffset()` operand, can add years and aren't seen). + * + * `selection.orgUnits` are DV's org unit items (unit ids, LEVEL-n, the + * user's units), judged from `options.orgUnitCoverage` (fetchOrgUnitCoverage) + * by getDataItemOrgUnitCompatibility: one result each, in `orgUnits`. Periods + * and places are judged apart: a data set assigned to some places only, at + * another period type than the others, isn't judged by place yet. + */ +export const getDataItemProfileCompatibility = ( + profile, + { periods = [], orgUnits = [] } = {}, + options = {} +) => { + const selectionYears = getSelectionYears(periods, options.calendar) + const results = periods.map((period) => + getPeriodResult(profile, period, { ...options, selectionYears }) + ) + const orgUnitResults = orgUnits.length + ? getDataItemOrgUnitCompatibility( + profile, + orgUnits, + options.orgUnitCoverage + ) + : [] + const all = [...results, ...orgUnitResults] + const overall = all.length ? combine(all) : { status: null, reasons: [] } + + return { + ...overall, + sources: profile.sources.map((source, i) => ({ + dataSetId: getDataSetId(source), + ...(results.length + ? combine(results.map(({ sources }) => sources[i])) + : { status: null, reasons: [] }), + })), + periods: results, + ...(orgUnits.length && { orgUnits: orgUnitResults }), + } +} diff --git a/src/modules/dataItemProfile/orgUnitSelection.js b/src/modules/dataItemProfile/orgUnitSelection.js new file mode 100644 index 000000000..4250c4b06 --- /dev/null +++ b/src/modules/dataItemProfile/orgUnitSelection.js @@ -0,0 +1,160 @@ +export const ORG_UNIT_ITEM_UNIT = 'UNIT' +export const ORG_UNIT_ITEM_LEVEL = 'LEVEL' +export const ORG_UNIT_ITEM_GROUP = 'GROUP' +export const ORG_UNIT_ITEM_USER = 'USER' +export const ORG_UNIT_ITEM_UNKNOWN = 'UNKNOWN' + +// How many levels below the user's units each user item reaches +const USER_ITEM_DEPTHS = { + USER_ORGUNIT: 0, + USER_ORGUNIT_CHILDREN: 1, + USER_ORGUNIT_GRANDCHILDREN: 2, +} + +const UID = /^[a-zA-Z][a-zA-Z0-9]{10}$/ + +/** + * What an org unit dimension item is, as DV saves it: a unit id, LEVEL-n + * (a number, or a level id), OU_GROUP-id, or one of the user's units + * (USER_ORGUNIT, its children or grandchildren). + */ +export const parseOrgUnitItem = (id) => { + if (id in USER_ITEM_DEPTHS) { + return { id, kind: ORG_UNIT_ITEM_USER, depth: USER_ITEM_DEPTHS[id] } + } + + if (id.startsWith('LEVEL-')) { + const level = id.slice('LEVEL-'.length) + + return { + id, + kind: ORG_UNIT_ITEM_LEVEL, + level: /^\d+$/.test(level) ? Number(level) : level, + } + } + + if (id.startsWith('OU_GROUP-')) { + return { id, kind: ORG_UNIT_ITEM_GROUP, group: id.slice(9) } + } + + return UID.test(id) + ? { id, kind: ORG_UNIT_ITEM_UNIT } + : { id, kind: ORG_UNIT_ITEM_UNKNOWN } +} + +const isBoundedKind = ({ kind }) => + kind === ORG_UNIT_ITEM_LEVEL || kind === ORG_UNIT_ITEM_GROUP + +/** + * A selection as analytics reads it: with a level or a group in it, the + * units are boundaries (districts in Bo), not items of their own. Gives the + * `items` to judge and the `boundaries` (unit ids). + */ +export const readOrgUnitSelection = (orgUnits = []) => { + const parsed = orgUnits.map(parseOrgUnitItem) + const bounded = parsed.some(isBoundedKind) + const units = parsed.filter(({ kind }) => kind === ORG_UNIT_ITEM_UNIT) + + return { + items: bounded + ? parsed.filter(({ kind }) => kind !== ORG_UNIT_ITEM_UNIT) + : parsed, + boundaries: bounded ? units.map(({ id }) => id) : [], + } +} + +/* What a selection needs counted: its units, the roots (a level with no + * boundary), the user's units, and its groups */ +export const getUnitsToCount = (orgUnits = []) => { + const parsed = orgUnits.map(parseOrgUnitItem) + const ofKind = (kind) => parsed.filter((item) => item.kind === kind) + + return { + unitIds: ofKind(ORG_UNIT_ITEM_UNIT).map(({ id }) => id), + needsRoots: + ofKind(ORG_UNIT_ITEM_LEVEL).length > 0 && + !ofKind(ORG_UNIT_ITEM_UNIT).length, + needsUser: ofKind(ORG_UNIT_ITEM_USER).length > 0, + groupIds: [ + ...new Set(ofKind(ORG_UNIT_ITEM_GROUP).map(({ group }) => group)), + ], + } +} + +// Where the counts of a group's members at one level, under a boundary, are kept +export const getGroupCountsKey = (group, level, boundary) => + `${group}:${level}:${boundary ?? ''}` + +/* A group's members at each level they are at, under each boundary at or + * above it: analytics keeps the members inside the boundaries */ +const getGroupTargets = (group, boundaries, { units, groups }) => { + const memberLevels = groups?.[group] + const within = boundaries.length ? boundaries : [null] + + if (!memberLevels || boundaries.some((unitId) => !units[unitId])) { + return null + } + + return Object.keys(memberLevels) + .map(Number) + .filter((level) => memberLevels[level] > 0) + .flatMap((level) => + within + .filter((unitId) => !unitId || units[unitId].level <= level) + .map((unitId) => ({ + key: getGroupCountsKey(group, level, unitId), + level, + group, + })) + ) +} + +const getLevelNumber = (level, levels) => + typeof level === 'number' + ? level + : levels.find(({ id }) => id === level)?.level ?? null + +/** + * The places an item covers, each as a unit and the level asked under it: + * a unit at its own level, LEVEL-n at level n under each boundary (or under + * the roots), the user's units at their level plus the item's depth. A + * group gives its members at each level, under each boundary, kept by `key` + * (getGroupCountsKey). Null when it can't be told: an unknown id or level, + * or a unit or group whose counts aren't loaded. + */ +export const getOrgUnitTargets = (item, boundaries, coverage) => { + const { units, roots = [], userUnits, levels = [] } = coverage + const unitTarget = (unitId, depth = 0) => + units[unitId] && { unitId, level: units[unitId].level + depth } + + switch (item.kind) { + case ORG_UNIT_ITEM_UNIT: { + const target = unitTarget(item.id) + + return target ? [target] : null + } + case ORG_UNIT_ITEM_LEVEL: { + const level = getLevelNumber(item.level, levels) + const within = boundaries.length ? boundaries : roots + + if (!level || within.some((unitId) => !units[unitId])) { + return null + } + + return within + .filter((unitId) => units[unitId].level <= level) + .map((unitId) => ({ unitId, level })) + } + case ORG_UNIT_ITEM_USER: { + const targets = (userUnits ?? []).map((unitId) => + unitTarget(unitId, item.depth) + ) + + return userUnits && !targets.includes(undefined) ? targets : null + } + case ORG_UNIT_ITEM_GROUP: + return getGroupTargets(item.group, boundaries, coverage) + default: + return null + } +} diff --git a/src/modules/dataItemProfile/orgUnitSide.js b/src/modules/dataItemProfile/orgUnitSide.js new file mode 100644 index 000000000..53322d678 --- /dev/null +++ b/src/modules/dataItemProfile/orgUnitSide.js @@ -0,0 +1,48 @@ +import { getSourceId, isPlacedAnywhere } from './sources.js' + +const levelsOf = (orgUnitLevels = {}) => + Object.keys(orgUnitLevels) + .map(Number) + .filter((level) => orgUnitLevels[level] > 0) + +/** + * The profile's org unit side, from its sources' `orgUnitLevels`: the levels + * its data sets are assigned at, deepest first, the deepest (`entryLevel`, + * where most data is entered), and whether they are assigned at different + * levels (`mixed`). + */ +export const getOrgUnitSide = (sources) => { + const assigned = sources + .filter(({ orgUnitLevels }) => orgUnitLevels) + .map(({ orgUnitLevels }) => levelsOf(orgUnitLevels)) + const levels = [...new Set(assigned.flat())].sort((a, b) => b - a) + const deepestOfEach = assigned + .filter((sourceLevels) => sourceLevels.length) + .map((sourceLevels) => Math.max(...sourceLevels)) + + return { + levels, + entryLevel: levels[0] ?? null, + mixed: new Set(deepestOfEach).size > 1, + } +} + +/** + * The profile with its org unit side, from each data set's or program's + * assigned units per level (`assignedLevels`, by id, as + * fetchSourceOrgUnitLevels gives them): each source gains its + * `orgUnitLevels`, except program indicators placed anywhere + * (isPlacedAnywhere). + */ +export const withOrgUnitSide = (profile, assignedLevels) => { + const sources = profile.sources.map((source) => + getSourceId(source) && !isPlacedAnywhere(source) + ? { + ...source, + orgUnitLevels: assignedLevels[getSourceId(source)] ?? {}, + } + : source + ) + + return { ...profile, sources, orgUnit: getOrgUnitSide(sources) } +} diff --git a/src/modules/dataItemProfile/periodTypeRelations.js b/src/modules/dataItemProfile/periodTypeRelations.js new file mode 100644 index 000000000..56e7b764d --- /dev/null +++ b/src/modules/dataItemProfile/periodTypeRelations.js @@ -0,0 +1,192 @@ +import { + convertToIso8601, + createFixedPeriodFromPeriodId, + getFixedPeriodByDate, +} from '@dhis2/multi-calendar-dates' +import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../components/PeriodDimension/utils/enabledPeriodTypes.js' +import { getFrequencyOrder, isPeriodType } from './periodTypes.js' + +export const PERIOD_RELATION_SAME = 'same' +export const PERIOD_RELATION_WITHIN = 'within' +export const PERIOD_RELATION_CONTAINS = 'contains' +export const PERIOD_RELATION_OVERLAPS = 'overlaps' +export const PERIOD_RELATION_DISJOINT = 'disjoint' + +/** + * Whether analytics adds data collected at `dataPeriodType` into periods of + * `queryPeriodType`: only into the same type, or into a type with a higher + * frequencyOrder. Another type of the same order (a Wednesday week for a + * Monday week) gets nothing. Averaged data is repeated and FIRST and LAST + * carried instead, see getDataItemProfileCompatibility. Null when either type + * is unknown. + */ +export const aggregatesInto = (dataPeriodType, queryPeriodType) => { + if (!isPeriodType(dataPeriodType) || !isPeriodType(queryPeriodType)) { + return null + } + + return ( + dataPeriodType === queryPeriodType || + getFrequencyOrder(queryPeriodType) > getFrequencyOrder(dataPeriodType) + ) +} + +export const comparePeriodTypes = (a, b) => + getFrequencyOrder(a) - getFrequencyOrder(b) + +const ISO_CALENDARS = ['gregory', 'iso8601'] + +/* November types name the year they end in: 2025Nov is November 2024 to + * October 2025, 2025NovQ1 November 2024 to January 2025. multi-calendar-dates + * 1.3.2 can't read the quarters and six-months, gives them ids the server + * doesn't know (2024NovemberQ1), and puts 2025Nov a year late. */ +const NOVEMBER_PERIOD_ID = /^(\d{4})Nov(?:([QS])([1-4]))?$/ +const NOVEMBER_PERIOD_TYPE_SUFFIXES = { + FinancialNov: { kind: '', months: 12 }, + QuarterlyNov: { kind: 'Q', months: 3 }, + SixMonthlyNov: { kind: 'S', months: 6 }, +} + +const pad = (number, length = 2) => String(number).padStart(length, '0') + +const getNovemberPeriodDates = (periodId) => { + const [, year, kind, number] = periodId.match(NOVEMBER_PERIOD_ID) + const months = { Q: 3, S: 6 }[kind] ?? 12 + const firstMonth = 10 + (Number(number ?? 1) - 1) * months + const start = new Date(Date.UTC(Number(year) - 1, firstMonth, 1)) + const end = new Date(Date.UTC(Number(year) - 1, firstMonth + months, 0)) + const toDate = (date) => + `${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad( + date.getUTCDate() + )}` + + return { startDate: toDate(start), endDate: toDate(end) } +} + +// The November period that holds an ISO date (YYYY-MM-DD) +const getNovemberPeriodByDate = (periodType, date) => { + const { kind, months } = NOVEMBER_PERIOD_TYPE_SUFFIXES[periodType] + const [year, month] = date.split('-').map(Number) + const endYear = month >= 11 ? year + 1 : year + const monthsSinceNovember = (month + 1) % 12 + const number = Math.floor(monthsSinceNovember / months) + 1 + const id = `${endYear}Nov${kind ? `${kind}${number}` : ''}` + + return { id, ...getNovemberPeriodDates(id) } +} + +// Start and end dates in the calendar's own dates, or null for an unknown id +export const getPeriodDates = (periodId, calendar = 'gregory') => { + if (NOVEMBER_PERIOD_ID.test(periodId)) { + return ISO_CALENDARS.includes(calendar) + ? getNovemberPeriodDates(periodId) + : null + } + + try { + const { startDate, endDate } = createFixedPeriodFromPeriodId({ + periodId, + calendar, + }) + + return { startDate, endDate } + } catch { + return null + } +} + +// Dates are YYYY-MM-DD strings of one calendar, so they compare as strings +export const getPeriodRelation = (a, b) => { + if (a.startDate === b.startDate && a.endDate === b.endDate) { + return PERIOD_RELATION_SAME + } + + if (a.endDate < b.startDate || b.endDate < a.startDate) { + return PERIOD_RELATION_DISJOINT + } + + if (a.startDate >= b.startDate && a.endDate <= b.endDate) { + return PERIOD_RELATION_WITHIN + } + + if (b.startDate >= a.startDate && b.endDate <= a.endDate) { + return PERIOD_RELATION_CONTAINS + } + + return PERIOD_RELATION_OVERLAPS +} + +export const getFixedPeriodOfTypeByDate = ( + periodType, + date, + calendar = 'gregory' +) => { + if (NOVEMBER_PERIOD_TYPE_SUFFIXES[periodType]) { + return ISO_CALENDARS.includes(calendar) + ? getNovemberPeriodByDate(periodType, date) + : null + } + + const libraryPeriodType = SERVER_PT_TO_MULTI_CALENDAR_PT[periodType] + + if (!libraryPeriodType) { + return null + } + + try { + return getFixedPeriodByDate({ + periodType: libraryPeriodType, + date, + calendar, + }) + } catch { + return null + } +} + +/** + * The smallest range of whole `periodType` periods that covers `dates`, or + * null when it can't be told. + */ +export const widenToWholePeriods = ( + dates, + periodType, + calendar = 'gregory' +) => { + const first = getFixedPeriodOfTypeByDate( + periodType, + dates.startDate, + calendar + ) + const last = getFixedPeriodOfTypeByDate(periodType, dates.endDate, calendar) + + if (!first || !last) { + return null + } + + return { startDate: first.startDate, endDate: last.endDate } +} + +/** + * Whether a period starts and ends on the edges of `periodType`'s periods, so + * data of that type fits it exactly (a quarter on monthly data, not a month on + * weekly data). Null when it can't be told. + */ +export const periodNestsIn = (dates, periodType, calendar = 'gregory') => { + const widened = widenToWholePeriods(dates, periodType, calendar) + + return widened + ? getPeriodRelation(widened, dates) === PERIOD_RELATION_SAME + : null +} + +// Analytics takes ISO dates: dates of other calendars are converted +export const toIsoDate = (date, calendar = 'gregory') => { + if (!date || ISO_CALENDARS.includes(calendar)) { + return date + } + + const { year, month, day } = convertToIso8601(date, calendar) + + return `${pad(year, 4)}-${pad(month)}-${pad(day)}` +} diff --git a/src/modules/dataItemProfile/periodTypes.js b/src/modules/dataItemProfile/periodTypes.js new file mode 100644 index 000000000..8050d08f7 --- /dev/null +++ b/src/modules/dataItemProfile/periodTypes.js @@ -0,0 +1,164 @@ +import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../components/PeriodDimension/utils/enabledPeriodTypes.js' +import { PERIOD_TYPE_REGEX } from '../../components/PeriodDimension/utils/fixedPeriods.js' +import { getRelativePeriodsDetails } from '../../components/PeriodDimension/utils/relativePeriods.js' + +// Server period type names with their frequencyOrder, as /api/periodTypes returns them +export const PERIOD_TYPE_FREQUENCY_ORDER = { + Daily: 1, + Weekly: 7, + WeeklyWednesday: 7, + WeeklyThursday: 7, + WeeklyFriday: 7, + WeeklySaturday: 7, + WeeklySunday: 7, + BiWeekly: 14, + Monthly: 30, + BiMonthly: 61, + Quarterly: 91, + QuarterlyNov: 91, + SixMonthly: 182, + SixMonthlyApril: 182, + SixMonthlyNov: 182, + Yearly: 365, + FinancialFeb: 365, + FinancialApril: 365, + FinancialJuly: 365, + FinancialAug: 365, + FinancialSep: 365, + FinancialOct: 365, + FinancialNov: 365, + TwoYearly: 730, +} + +export const PERIOD_TYPES = Object.keys(PERIOD_TYPE_FREQUENCY_ORDER) + +/* Analytics fails on QuarterlyNov periods in 2.40 ("Can't find resource for + * bundle … key format.QuarterlyNov.startDate"), and answers from 2.41 */ +const PERIOD_TYPE_MIN_MINOR_VERSION = { QuarterlyNov: 41 } + +// Without a server version, every type counts as supported +export const isPeriodTypeSupported = (periodType, serverVersion) => + !serverVersion || + serverVersion.major > 2 || + serverVersion.minor >= (PERIOD_TYPE_MIN_MINOR_VERSION[periodType] ?? 0) + +const WEEKLY_PERIOD_TYPES = PERIOD_TYPES.filter((type) => + type.startsWith('Weekly') +) +const FINANCIAL_PERIOD_TYPES = PERIOD_TYPES.filter((type) => + type.startsWith('Financial') +) + +export const isPeriodType = (value) => + Object.prototype.hasOwnProperty.call(PERIOD_TYPE_FREQUENCY_ORDER, value) + +export const getFrequencyOrder = (periodType) => + PERIOD_TYPE_FREQUENCY_ORDER[periodType] + +export const sortPeriodTypes = (periodTypes) => + [...periodTypes].sort( + (a, b) => + getFrequencyOrder(a) - getFrequencyOrder(b) || + PERIOD_TYPES.indexOf(a) - PERIOD_TYPES.indexOf(b) + ) + +const SERVER_PT_BY_LIBRARY_PT = Object.fromEntries( + Object.entries(SERVER_PT_TO_MULTI_CALENDAR_PT).map(([server, library]) => [ + library, + server, + ]) +) + +// PERIOD_TYPE_REGEX lacks the November quarters and six-months +const PERIOD_ID_PATTERNS = [ + ...Object.entries(PERIOD_TYPE_REGEX).map(([libraryType, regex]) => [ + SERVER_PT_BY_LIBRARY_PT[libraryType], + regex, + ]), + ['QuarterlyNov', /^(\d{4})NovQ([1-4])$/], + ['SixMonthlyNov', /^(\d{4})NovS([12])$/], +] + +export const getPeriodTypeOfPeriodId = (periodId) => + PERIOD_ID_PATTERNS.find(([, regex]) => regex.test(periodId))?.[0] ?? null + +const RELATIVE_CATEGORY_PERIOD_TYPES = { + DAILY: ['Daily'], + BIWEEKLY: ['BiWeekly'], + MONTHLY: ['Monthly'], + BIMONTHLY: ['BiMonthly'], + QUARTERLY: ['Quarterly'], + SIXMONTHLY: ['SixMonthly'], + YEARLY: ['Yearly'], +} + +/* Relative weeks and financial years follow the analyticsWeeklyStart and + * analyticsFinancialYearStart settings. Without them, every type they could + * be is returned. */ +const getRelativePeriodTypes = (category, options) => { + if (category === 'WEEKLY') { + return options.weeklyPeriodType + ? [options.weeklyPeriodType] + : WEEKLY_PERIOD_TYPES + } + + if (category === 'FINANCIAL') { + return options.financialYearPeriodType + ? [options.financialYearPeriodType] + : FINANCIAL_PERIOD_TYPES + } + + return RELATIVE_CATEGORY_PERIOD_TYPES[category] ?? [] +} + +const getRelativePeriodCategory = (periodId) => + getRelativePeriodsDetails()[periodId]?.type + +/** + * The period types a period can be: one for a fixed period or a period type, + * several for a relative period whose type depends on a server setting, none + * when it isn't recognized. + */ +export const getCandidatePeriodTypes = (period, options = {}) => { + if (isPeriodType(period)) { + return [period] + } + + const fixedPeriodType = getPeriodTypeOfPeriodId(period) + + if (fixedPeriodType) { + return [fixedPeriodType] + } + + const category = getRelativePeriodCategory(period) + + return category ? getRelativePeriodTypes(category, options) : [] +} + +const WEEKLY_START_TO_PERIOD_TYPE = { + WEEKLY: 'Weekly', + WEEKLY_WEDNESDAY: 'WeeklyWednesday', + WEEKLY_THURSDAY: 'WeeklyThursday', + WEEKLY_FRIDAY: 'WeeklyFriday', + WEEKLY_SATURDAY: 'WeeklySaturday', + WEEKLY_SUNDAY: 'WeeklySunday', +} + +const FINANCIAL_YEAR_START_TO_PERIOD_TYPE = { + FINANCIAL_YEAR_FEBRUARY: 'FinancialFeb', + FINANCIAL_YEAR_APRIL: 'FinancialApril', + FINANCIAL_YEAR_JULY: 'FinancialJuly', + FINANCIAL_YEAR_AUGUST: 'FinancialAug', + FINANCIAL_YEAR_SEPTEMBER: 'FinancialSep', + FINANCIAL_YEAR_OCTOBER: 'FinancialOct', + FINANCIAL_YEAR_NOVEMBER: 'FinancialNov', +} + +export const getRelativePeriodTypeOptions = ({ + analyticsWeeklyStart, + analyticsFinancialYearStart, +} = {}) => ({ + weeklyPeriodType: WEEKLY_START_TO_PERIOD_TYPE[analyticsWeeklyStart], + financialYearPeriodType: + FINANCIAL_YEAR_START_TO_PERIOD_TYPE[analyticsFinancialYearStart], +}) diff --git a/src/modules/dataItemProfile/sources.js b/src/modules/dataItemProfile/sources.js new file mode 100644 index 000000000..d7bbeb50a --- /dev/null +++ b/src/modules/dataItemProfile/sources.js @@ -0,0 +1,31 @@ +/* A profile source is a data set ({ dataSet, elements, reportingRate }) or a + * program ({ program, elements: [], reportingRate: false }), or an element in + * no data set (dataSet null) */ + +export const isProgramSource = ({ program }) => Boolean(program) + +// The id of the data set or program behind a source, or null +export const getSourceId = ({ dataSet, program }) => + dataSet?.id ?? program?.id ?? null + +/* A program indicator's orgUnitField places values by the event's or + * enrollment's org unit (unset, EVENT, ENROLLMENT), or by the owner's, which + * fall back to it: those are where the program is assigned. REGISTRATION and + * an org unit data element or attribute (its id) can be anywhere. */ +const BOUNDED_ORG_UNIT_FIELDS = [ + 'EVENT', + 'ENROLLMENT', + 'OWNER_AT_START', + 'OWNER_AT_END', +] + +export const isBoundedOrgUnitField = (orgUnitField) => + !orgUnitField || BOUNDED_ORG_UNIT_FIELDS.includes(orgUnitField) + +// Whether a source's values can be at any org unit, its assignment aside +export const isPlacedAnywhere = ({ orgUnitField }) => + !isBoundedOrgUnitField(orgUnitField) + +// The metadata field units are assigned to a source by, for counts +export const getSourceField = (source) => + isProgramSource(source) ? 'programs' : 'dataSets' From a541a8ab9dab04267d2d0f08e22704223467fd59 Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Fri, 2 Oct 2026 17:40:00 +0200 Subject: [PATCH 2/7] refactor: reorganize the data item profile after review --- package.json | 1 + src/__demo__/DataItemProfile.reference.js | 106 +- src/__demo__/DataItemProfile.stories.js | 117 +- .../DataItemProfileTypicalUse.stories.js | 74 +- src/__fixtures__/fakeOrgUnitServer.js | 105 + .../org-units/aggregation-levels.json | 113 + src/__fixtures__/org-units/entered-above.json | 106 + src/__fixtures__/org-units/mixed-levels.json | 107 + .../org-units/org-unit-groups.json | 105 + .../org-units/org-unit-requests.json | 2906 ++++ .../org-units/partly-assigned.json | 106 + src/__fixtures__/org-units/programs.json | 129 + .../org-units/user-org-units.json | 104 + .../aggregation-by-period-type.json | 13789 +--------------- .../period-types/carry-windows.json | 2774 +--- .../period-types/detection-requests.json | 938 +- .../indicators-and-expressions.json | 3471 +--- .../period-types/metadata-shapes.json | 3435 +++- .../period-types/mixed-collection.json | 1726 +- .../period-types/periods-that-dont-nest.json | 963 +- .../period-types/reporting-rates.json | 1237 +- src/api/dataItemProfile.js | 300 - .../fetchDataItemProfileMetadata.spec.js} | 92 +- .../__tests__/fetchOrgUnitCoverage.spec.js} | 128 +- .../__tests__/orgUnitGroupCounts.spec.js | 97 + .../__tests__/orgUnitQueries.spec.js | 60 + .../dataItemProfile/assignedOrgUnitCounts.js | 68 + .../fetchDataItemProfileMetadata.js | 194 + .../dataItemProfile/fetchOrgUnitCoverage.js | 197 + src/api/dataItemProfile/metadataQueries.js | 119 + src/api/dataItemProfile/orgUnitGroupCounts.js | 125 + src/api/dataItemProfile/orgUnitQueries.js | 40 + src/api/orgUnitCoverage.js | 266 - src/api/orgUnitGroupCounts.js | 114 - src/api/orgUnitQueries.js | 20 - ...ks.spec.js => useDataItemProfiles.spec.js} | 36 +- .../DataItemProfile/__tests__/utils.spec.js | 61 + .../DataItemProfile/useDataItemProfiles.js | 59 +- src/components/DataItemProfile/utils.js | 2 +- .../useDataOutputPeriodTypes.js | 29 +- .../utils/enabledPeriodTypes.js | 22 + src/index.js | 66 +- ...ems.spec.js => expressionOperands.spec.js} | 14 +- .../__tests__/getDataItemProfile.spec.js | 96 +- .../getDataItemProfileCompatibility.spec.js | 144 +- .../__tests__/orgUnitFixtures.spec.js | 298 + .../__tests__/orgUnitSelection.spec.js | 160 - .../__tests__/orgUnitSide.spec.js | 73 - ...ixtures.spec.js => periodFixtures.spec.js} | 39 +- .../dataItemProfile/__tests__/sources.spec.js | 106 + .../__tests__/combineResults.spec.js | 70 + ...taItemProfileOrgUnitCompatibility.spec.js} | 133 +- .../compatibility/combineResults.js | 54 + .../getDataItemProfileOrgUnitCompatibility.js | 151 + .../getDataItemProfilePeriodCompatibility.js | 162 + .../compatibility/orgUnitSourceResults.js | 189 + .../compatibility/periodSourceResults.js | 174 + .../dataItemProfile/compatibilityStatuses.js | 31 - src/modules/dataItemProfile/constants.js | 170 + .../dataItemProfile/expressionItems.js | 80 - .../dataItemProfile/expressionOperands.js | 101 + .../getDataItemOrgUnitCompatibility.js | 320 - .../dataItemProfile/getDataItemProfile.js | 384 +- .../getDataItemProfileCompatibility.js | 415 +- .../dataItemProfile/orgUnitSelection.js | 160 - src/modules/dataItemProfile/orgUnitSide.js | 48 - .../__tests__/orgUnitSelection.spec.js | 184 + .../orgUnits/orgUnitSelection.js | 212 + .../dataItemProfile/periodTypeRelations.js | 192 - src/modules/dataItemProfile/periodTypes.js | 164 - .../periods/__tests__/calendarDates.spec.js | 46 + .../__tests__/firstLastValues.spec.js} | 11 +- .../__tests__/multiCalendarPatches.spec.js | 49 + .../__tests__/periodRanges.spec.js} | 74 +- .../__tests__/periodTypes.spec.js | 36 +- .../dataItemProfile/periods/calendarDates.js | 47 + .../firstLastValues.js} | 64 +- .../periods/multiCalendarPatches.js | 59 + .../dataItemProfile/periods/periodRanges.js | 134 + .../dataItemProfile/periods/periodTypes.js | 146 + .../__tests__/assignedOrgUnitLevels.spec.js | 87 + .../profile/assignedOrgUnitLevels.js | 55 + .../profile/assignedPeriodTypes.js | 39 + .../dataItemProfile/profile/collectSources.js | 242 + .../profile/sourceCollector.js | 95 + src/modules/dataItemProfile/sources.js | 72 +- 86 files changed, 13007 insertions(+), 27080 deletions(-) create mode 100644 src/__fixtures__/fakeOrgUnitServer.js create mode 100644 src/__fixtures__/org-units/aggregation-levels.json create mode 100644 src/__fixtures__/org-units/entered-above.json create mode 100644 src/__fixtures__/org-units/mixed-levels.json create mode 100644 src/__fixtures__/org-units/org-unit-groups.json create mode 100644 src/__fixtures__/org-units/org-unit-requests.json create mode 100644 src/__fixtures__/org-units/partly-assigned.json create mode 100644 src/__fixtures__/org-units/programs.json create mode 100644 src/__fixtures__/org-units/user-org-units.json delete mode 100644 src/api/dataItemProfile.js rename src/api/{__tests__/dataItemProfile.spec.js => dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js} (80%) rename src/api/{__tests__/orgUnitCoverage.spec.js => dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js} (66%) create mode 100644 src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js create mode 100644 src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js create mode 100644 src/api/dataItemProfile/assignedOrgUnitCounts.js create mode 100644 src/api/dataItemProfile/fetchDataItemProfileMetadata.js create mode 100644 src/api/dataItemProfile/fetchOrgUnitCoverage.js create mode 100644 src/api/dataItemProfile/metadataQueries.js create mode 100644 src/api/dataItemProfile/orgUnitGroupCounts.js create mode 100644 src/api/dataItemProfile/orgUnitQueries.js delete mode 100644 src/api/orgUnitCoverage.js delete mode 100644 src/api/orgUnitGroupCounts.js delete mode 100644 src/api/orgUnitQueries.js rename src/components/DataItemProfile/__tests__/{hooks.spec.js => useDataItemProfiles.spec.js} (93%) create mode 100644 src/components/DataItemProfile/__tests__/utils.spec.js rename src/modules/dataItemProfile/__tests__/{expressionItems.spec.js => expressionOperands.spec.js} (85%) create mode 100644 src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js delete mode 100644 src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js delete mode 100644 src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js rename src/modules/dataItemProfile/__tests__/{fixtures.spec.js => periodFixtures.spec.js} (93%) create mode 100644 src/modules/dataItemProfile/__tests__/sources.spec.js create mode 100644 src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js rename src/modules/dataItemProfile/{__tests__/getDataItemOrgUnitCompatibility.spec.js => compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js} (76%) create mode 100644 src/modules/dataItemProfile/compatibility/combineResults.js create mode 100644 src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js create mode 100644 src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js create mode 100644 src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js create mode 100644 src/modules/dataItemProfile/compatibility/periodSourceResults.js delete mode 100644 src/modules/dataItemProfile/compatibilityStatuses.js create mode 100644 src/modules/dataItemProfile/constants.js delete mode 100644 src/modules/dataItemProfile/expressionItems.js create mode 100644 src/modules/dataItemProfile/expressionOperands.js delete mode 100644 src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js delete mode 100644 src/modules/dataItemProfile/orgUnitSelection.js delete mode 100644 src/modules/dataItemProfile/orgUnitSide.js create mode 100644 src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js create mode 100644 src/modules/dataItemProfile/orgUnits/orgUnitSelection.js delete mode 100644 src/modules/dataItemProfile/periodTypeRelations.js delete mode 100644 src/modules/dataItemProfile/periodTypes.js create mode 100644 src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js rename src/modules/dataItemProfile/{__tests__/carriedValues.spec.js => periods/__tests__/firstLastValues.spec.js} (95%) create mode 100644 src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js rename src/modules/dataItemProfile/{__tests__/periodTypeRelations.spec.js => periods/__tests__/periodRanges.spec.js} (67%) rename src/modules/dataItemProfile/{ => periods}/__tests__/periodTypes.spec.js (79%) create mode 100644 src/modules/dataItemProfile/periods/calendarDates.js rename src/modules/dataItemProfile/{carriedValues.js => periods/firstLastValues.js} (58%) create mode 100644 src/modules/dataItemProfile/periods/multiCalendarPatches.js create mode 100644 src/modules/dataItemProfile/periods/periodRanges.js create mode 100644 src/modules/dataItemProfile/periods/periodTypes.js create mode 100644 src/modules/dataItemProfile/profile/__tests__/assignedOrgUnitLevels.spec.js create mode 100644 src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js create mode 100644 src/modules/dataItemProfile/profile/assignedPeriodTypes.js create mode 100644 src/modules/dataItemProfile/profile/collectSources.js create mode 100644 src/modules/dataItemProfile/profile/sourceCollector.js diff --git a/package.json b/package.json index 9b6e2edee..1dda75a1a 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "!src/**/__snapshots__/**", "!src/**/__demo__/data/**", "!src/__fixtures__/period-types/**", + "!src/__fixtures__/org-units/**", "docs", "CHANGELOG.md" ], diff --git a/src/__demo__/DataItemProfile.reference.js b/src/__demo__/DataItemProfile.reference.js index 43217b3ec..827ec8cd2 100644 --- a/src/__demo__/DataItemProfile.reference.js +++ b/src/__demo__/DataItemProfile.reference.js @@ -4,31 +4,31 @@ import React from 'react' export const STATUS_DEFINITIONS = [ [ 'full', - 'Fully compatible with all the item’s data sets and programs that collect for the selection: every value collected comes back (also averaged, carried, or where only some units collect it).', - 'Data element captured monthly, with aggregation enabled, requested quarterly', - 'Indicator with all its components captured at facility level, with aggregation enabled, requested at district level', + 'Compatible with all the item’s data sets and programs that collect for the selection: every value comes back (also repeated, from an earlier period, or where only some org units are assigned).', + 'Data element in a monthly data set, with aggregation enabled, requested quarterly', + 'Indicator whose components are all in data sets assigned at facility level, requested at district level', ], [ 'partial', - 'Compatible with only some of the item’s data sets and programs that collect for the selection: the others’ values are left out. Only for an item collected in several data sets or programs that differ (mixed). For an expression, computed from such an operand (OPERAND_PARTIAL).', - 'Data element captured weekly from Monday in one data set and from Wednesday in another, requested by Monday week', - 'Data element captured at facility level in one data set and at district level in another, requested at a facility', + 'Compatible with only some of the item’s data sets and programs that collect for the selection: the others’ values are left out. Only for an item in several data sets or programs that differ. For an expression, computed from such an operand (OPERAND_PARTIAL).', + 'Data element in a Monday weekly and a Wednesday weekly data set, requested by Monday week', + 'Data element in a data set assigned at facility level and one assigned at district level, requested at a facility', ], [ 'none', 'Compatible with none of the item’s data sets and programs that collect for the selection: no value comes back. For an expression, an operand gives none (OPERAND_EMPTY).', - 'Data element captured monthly, requested weekly', - 'Data element captured at district level, requested at a facility', + 'Data element in a monthly data set, requested weekly', + 'Data element in a data set assigned at district level, requested at a facility', ], [ 'unknown', 'Can’t tell: see the reasons.', 'Relative weeks when the weekly start setting is missing', - 'An org unit group, or an event data item without its program in its id', + 'An org unit or group that isn’t loaded, or missing metadata', ], ] -export const REASON_DEFINITIONS = [ +export const PERIOD_REASON_DEFINITIONS = [ [ 'OPERAND_EMPTY', 'An expression whose operand gives no value has none: a ratio without its denominator.', @@ -42,110 +42,110 @@ export const REASON_DEFINITIONS = [ 'An indicator over IDSR Measles by Monday week', ], [ - 'AVERAGED', - 'Repeated from the data period that holds it.', - 'full, partial', - 'Total Population (yearly) by month', - ], - [ - 'CARRIED', - 'From another data period (FIRST, LAST).', - 'full, partial', - 'Monthly LAST data on 15 July: June’s value', - ], - [ - 'SHORTER', - 'Period shorter than the data’s type.', + 'PERIOD_TOO_SHORT', + 'The period is shorter than the period type of the data sets.', 'partial, none', 'ANC 1st visit (monthly) by week', ], [ - 'OTHER_TYPE', - 'Same length, other type.', + 'PERIOD_TYPE_MISMATCH', + 'Another period type of the same length.', 'partial, none', 'IDSR Measles’ Wednesday weeks by Monday week', ], [ - 'REPORTING_RATE', - 'Reporting rate in a shorter period.', + 'REPORTING_RATE_TOO_SHORT', + 'A reporting rate asked for a shorter period: a meaningless value.', 'partial, none', 'Child Health reporting rate by week', ], [ - 'NOTHING_TO_CARRY', - 'FIRST or LAST with no data period that counts.', + 'NO_EARLIER_PERIOD_VALUE', + 'FIRST or LAST data with no data period that counts for the period.', 'partial, none', 'Monthly LAST data on 1 January', ], + [ + 'REPEATED_VALUE', + 'The value of a longer data period, repeated (period aggregation AVERAGE).', + 'full, partial', + 'Total Population (yearly) by month', + ], + [ + 'EARLIER_PERIOD_VALUE', + 'The value of an earlier data period (period aggregation FIRST or LAST).', + 'full, partial', + 'Monthly LAST data on 15 July: June’s value', + ], [ 'PROFILE_UNKNOWN', 'Missing metadata: see the profile’s reasons.', 'unknown', - 'An element in no data set', + 'A data element in no data set', ], [ 'UNKNOWN_PERIOD', - 'Unreadable period id.', + 'The period id can’t be read.', 'unknown', 'A mistyped period id, like 2025X1', ], [ 'SETTING_MISSING', - 'Relative period type needs a setting not given.', + 'A relative period’s type depends on a setting that wasn’t given, and its types disagree.', 'unknown', 'LAST_4_WEEKS on weekly data, weekly start unknown', ], [ 'UNSUPPORTED_VERSION', - 'Type this server version can’t answer.', + 'The server version can’t answer it.', 'unknown', - '2025NovQ1 on 2.40', + '2025NovQ1 on 2.40; a program indicator without period boundaries before 2.43', ], ] export const ORG_UNIT_REASON_DEFINITIONS = [ [ 'NOT_ASSIGNED', - 'Its data sets aren’t assigned there, though they are at that level elsewhere.', + 'Not assigned there, though assigned at that level elsewhere.', 'none', 'ANC 1st visit at Junctionla MCHP', ], [ - 'BELOW_COLLECTION', - 'Data is entered above the level asked: nothing is split down. Partial when another data set fills the place.', + 'ASSIGNED_AT_HIGHER_LEVEL', + 'Assigned only at higher levels than the one asked: analytics never splits values down. Partial when another data set fills the org unit.', 'none, partial', - 'District data by facility', + 'A data set assigned at district level, requested by facility', ], [ - 'AGGREGATION_LEVEL', - 'The data element’s aggregation levels stop values entered below them from reaching the level asked. Partial when another data set fills the place.', + 'STOPPED_BY_AGGREGATION_LEVEL', + 'The data element’s aggregation levels stop values from lower levels reaching the level asked. Partial when another data set fills the org unit.', 'none, partial', - 'Facility data with aggregation level 2, asked by district', + 'Facility data with aggregation level 2, requested by district', + ], + [ + 'EMPTY_GROUP', + 'An org unit group without members: analytics refuses it (E7143). Leave it out of the request.', + 'none', + 'A group whose members were all removed', ], [ 'PARTLY_ASSIGNED', - 'Assigned to only some of the units at the deepest level entered: the others don’t collect it, so nothing is left out.', + 'Assigned to only some org units at the deepest level: the others collect nothing, so nothing is left out.', 'full', 'ANC 1st visit in Sierra Leone: 1,159 of 1,166 facilities', ], [ - 'ORG_UNIT_FIELD', - 'A program indicator places its values by another org unit than the event’s or enrollment’s (registration, or an org unit attribute): they can be anywhere, wherever its program is assigned.', + 'ANY_ORG_UNIT', + 'A program indicator placed by registration or an org unit attribute: its values can be at any org unit, wherever its program is assigned.', 'full', 'A program indicator by registration org unit', ], [ 'UNKNOWN_ORG_UNIT', - 'An org unit or level that isn’t loaded or can’t be read.', + 'The org unit, level or group isn’t loaded or can’t be read.', 'unknown', 'A mistyped id', ], - [ - 'EVENT_DATA', - 'Event data whose program can’t be told from its id.', - 'unknown', - 'An event data item named by its data element alone', - ], ] const ReferenceTable = ({ title, columns, rows }) => ( @@ -166,7 +166,7 @@ const ReferenceTable = ({ title, columns, rows }) => ( {code} {cells.map((cell, i) => ( - {cell} + {cell} ))} ))} diff --git a/src/__demo__/DataItemProfile.stories.js b/src/__demo__/DataItemProfile.stories.js index 255e8abe5..0dbcd3496 100644 --- a/src/__demo__/DataItemProfile.stories.js +++ b/src/__demo__/DataItemProfile.stories.js @@ -1,13 +1,13 @@ -import { InputField } from '@dhis2/ui' +import { Button, InputField } from '@dhis2/ui' import PropTypes from 'prop-types' import React, { useMemo, useState } from 'react' import { useDataItemProfiles } from '../components/DataItemProfile/useDataItemProfiles.js' -import { readOrgUnitSelection } from '../modules/dataItemProfile/orgUnitSelection.js' +import { readOrgUnitSelection } from '../modules/dataItemProfile/orgUnits/orgUnitSelection.js' import { ApiPanel, DemoHeading, ORG_UNIT_REASON_DEFINITIONS, - REASON_DEFINITIONS, + PERIOD_REASON_DEFINITIONS, STATUS_DEFINITIONS, } from './DataItemProfile.reference.js' import { @@ -29,23 +29,28 @@ export default { } // Event data comes from programs: it is placed in any period by its dates -const isCollectedByDate = (profile) => +const isPlacedByDate = (profile) => !profile.unknown && profile.sources.every(({ program }) => program) -const describeCollection = ({ period, ...profile }) => { - if (period.types.length) { - return `${period.types.join(', ')}${period.mixed ? ' (mixed)' : ''}` +const listWithSeveral = ({ hasSeveral }, values) => + `${values.join(', ')}${hasSeveral ? ' (several)' : ''}` + +const describePeriodTypes = (profile) => { + const { assignedPeriodTypes } = profile + + if (assignedPeriodTypes.types.length) { + return listWithSeveral(assignedPeriodTypes, assignedPeriodTypes.types) } - return isCollectedByDate(profile) ? 'event dates' : 'unknown' + return isPlacedByDate(profile) ? 'event dates' : 'unknown' } -// How many units at the deepest level entered the data sets are assigned to -const Coverage = ({ coverage }) => - coverage ? ( +// How many org units at the deepest level assigned the data sets are assigned to +const Assignment = ({ assignment }) => + assignment ? (
- {coverage.assigned.toLocaleString('en')} of{' '} - {coverage.total.toLocaleString('en')} at level {coverage.level} + {assignment.assigned.toLocaleString('en')} of{' '} + {assignment.total.toLocaleString('en')} at level {assignment.level}
{loading && } {error && } @@ -178,9 +215,9 @@ export const ProfilesAndCompatibility = () => { JSON - Collected at - Levels - Finest + Period types + Org unit levels + Shortest direct type {periods.map((period) => ( {period} ))} @@ -224,9 +261,13 @@ export const ProfilesAndCompatibility = () => { - {describeCollection(profile)} + {describePeriodTypes(profile)} {describeLevels(profile)} - {describeFinest(profile)} + + {describeShortestDirectType( + profile + )} + {compatibility.periods.map((result) => ( @@ -236,9 +277,9 @@ export const ProfilesAndCompatibility = () => { (result) => ( - diff --git a/src/__demo__/DataItemProfileTypicalUse.stories.js b/src/__demo__/DataItemProfileTypicalUse.stories.js index 1a28c1da0..ddfd5ef86 100644 --- a/src/__demo__/DataItemProfileTypicalUse.stories.js +++ b/src/__demo__/DataItemProfileTypicalUse.stories.js @@ -21,12 +21,12 @@ export default { const STEPS = [ [ - 'The user picks data items: DV loads their profiles, and where their data sets are assigned under the org units.', + 'The user picks data items: DV loads their profiles, and where their data sets and programs are assigned under the org units.', 'useDataItemProfiles(items, { orgUnits })', ], [ 'The pickers mark each period type and each org unit level for those items.', - "getDataItemCompatibility(itemId, { periods: [periodType], orgUnits: [boundary, 'LEVEL-n'] })", + "getDataItemCompatibility(itemId, { periods: [periodType], orgUnits: [parentOrgUnit, 'LEVEL-n'] })", ], [ 'Periods and org units selected, before Update: DV checks them, from current metadata only.', @@ -67,10 +67,10 @@ const adviceFor = (result, profile) => { switch (status) { case 'full': - if (reasons.includes('CARRIED')) { + if (reasons.includes('EARLIER_PERIOD_VALUE')) { return 'Shown, from an earlier data period.' } - return reasons.includes('AVERAGED') + return reasons.includes('REPEATED_VALUE') ? 'Shown, repeated from the data period that holds it.' : 'Shown.' case 'partial': @@ -78,13 +78,13 @@ const adviceFor = (result, profile) => { ? 'Shown, but computed from incomplete data: it can be off either way.' : `Partly shown: the ${typesLeftOut} data can’t fill this period.` case 'none': - if (reasons.includes('REPORTING_RATE')) { + if (reasons.includes('REPORTING_RATE_TOO_SHORT')) { return 'Not shown: a reporting rate can’t be shown by this period.' } - if (reasons.includes('NOTHING_TO_CARRY')) { + if (reasons.includes('NO_EARLIER_PERIOD_VALUE')) { return 'Not shown: no earlier value in these years.' } - return `Not shown: collected ${typesLeftOut}.` + return `Not shown: its data sets are ${typesLeftOut}.` default: return 'Can’t tell.' } @@ -121,33 +121,51 @@ const PeriodTypeMarks = ({ items, getDataItemCompatibility }) => ( const formatCount = (count) => count.toLocaleString('en') -// What DV could say about an item, for one org unit selection item -const orgUnitAdviceFor = ({ status, reasons, coverage }, levels) => { - const levelName = - coverage && levels.find(({ level }) => level === coverage.level)?.name - const counted = - coverage && - `${formatCount(coverage.assigned)} of ${formatCount( - coverage.total - )} units at level ${levelName ?? coverage.level}` +const describeAssignment = ({ assigned, total, level }, levels) => { + const levelName = levels.find((item) => item.level === level)?.name + const counts = `${formatCount(assigned)} of ${formatCount(total)}` + + return `${counts} org units at level ${levelName ?? level}` +} + +const ORG_UNIT_NONE_ADVICE = { + ASSIGNED_AT_HIGHER_LEVEL: + 'Not shown: its data sets are assigned at a higher level.', + STOPPED_BY_AGGREGATION_LEVEL: + 'Not shown: its aggregation levels stop values before this level.', + EMPTY_GROUP: 'Leave it out: the group has no members.', +} + +const getFullAdvice = (reasons, assignment, levels) => { + if (reasons.includes('ANY_ORG_UNIT') || !assignment) { + return 'Shown.' + } + const assignedTo = describeAssignment(assignment, levels) + + return reasons.includes('PARTLY_ASSIGNED') + ? `Shown: assigned to ${assignedTo}; the others collect nothing.` + : `Shown: assigned to ${assignedTo}.` +} + +// What DV could say about an item, for one org unit selection item +const orgUnitAdviceFor = ({ status, reasons, assignment }, levels) => { switch (status) { case 'full': - return reasons.includes('PARTLY_ASSIGNED') - ? `Shown: assigned to ${counted}; the others don’t collect it.` - : `Shown: assigned to ${counted}.` + return getFullAdvice(reasons, assignment, levels) case 'partial': return reasons.includes('OPERAND_PARTIAL') ? 'Shown, but computed from incomplete data: it can be off either way.' - : 'Partly shown: data entered at a higher level is left out.' - case 'none': - return reasons.includes('BELOW_COLLECTION') - ? 'Not shown: entered at a higher level.' + : 'Partly shown: values of data sets assigned at a higher level are left out.' + case 'none': { + const reason = reasons.find((code) => ORG_UNIT_NONE_ADVICE[code]) + + return reason + ? ORG_UNIT_NONE_ADVICE[reason] : 'Not shown: its data sets aren’t assigned here.' + } default: - return reasons.includes('EVENT_DATA') - ? 'Can’t tell for event data yet.' - : 'Can’t tell.' + return 'Can’t tell.' } } @@ -238,7 +256,7 @@ export const TypicalUse = () => { ) const periods = useMemo(() => splitList(periodsText), [periodsText]) const orgUnits = useMemo(() => splitList(orgUnitsText), [orgUnitsText]) - // The country, for the levels in the picker, and the units selected + // The country, for the levels in the picker, and the org units selected const loadedOrgUnits = useMemo( () => [...new Set([SIERRA_LEONE, ...orgUnits])], [orgUnits] @@ -318,7 +336,7 @@ export const TypicalUse = () => { /> - Past data may have been collected with a + Past data may have been entered with a different configuration. diff --git a/src/__fixtures__/fakeOrgUnitServer.js b/src/__fixtures__/fakeOrgUnitServer.js new file mode 100644 index 000000000..9685efbc2 --- /dev/null +++ b/src/__fixtures__/fakeOrgUnitServer.js @@ -0,0 +1,105 @@ +/* A fake server for the org unit requests of the data item profile: + * organisationUnits (with the filters the library sends), organisationUnitLevels + * and me. `orgUnits` are [{ id, level, path, dataSets, programs }] (ids of + * what each is assigned to), `groups` are { [groupId]: [orgUnitId] }, `user` + * is { organisationUnits, dataViewOrganisationUnits } (org unit ids), and + * `levels` the order levels are listed in (as found by default). */ +export const createFakeOrgUnitServer = ({ + orgUnits, + groups = {}, + user = {}, + levels = [...new Set(orgUnits.map(({ level }) => level))], +}) => { + const byId = Object.fromEntries(orgUnits.map((unit) => [unit.id, unit])) + const parentOf = ({ path }) => byId[path.split('/').at(-2)] + const childrenOf = (unit) => + orgUnits.filter((other) => parentOf(other) === unit) + + // organisationUnitGroups.id, behind parent. and children. steps + const isInGroup = (unit, field, groupId) => { + const steps = field.split('.').slice(0, -2) + const related = steps.reduce( + (units, step) => + units.flatMap((one) => + step === 'parent' + ? [parentOf(one)].filter(Boolean) + : childrenOf(one) + ), + [unit] + ) + + return related.some(({ id }) => groups[groupId]?.includes(id)) + } + + const isAssigned = (unit, field, id) => + unit[field.split('.')[0]].includes(id) + + const FILTERS = { + in: (unit, field, value) => + value.slice(1, -1).split(',').includes(unit[field]), + eq: (unit, field, value) => { + if (field.endsWith('organisationUnitGroups.id')) { + return isInGroup(unit, field, value) + } + + return ['dataSets.id', 'programs.id'].includes(field) + ? isAssigned(unit, field, value) + : String(unit[field]) === value + }, + like: (unit, field, value) => unit[field].includes(value), + } + + const applyFilters = (filter) => + [filter].flat().reduce((units, condition) => { + const [field, operator, ...rest] = condition.split(':') + + return units.filter((unit) => + FILTERS[operator](unit, field, rest.join(':')) + ) + }, orgUnits) + + const toUnits = (ids = []) => ids.map((id) => byId[id]) + + const answer = ({ resource, params }) => { + if (resource === 'organisationUnitLevels') { + return { + organisationUnitLevels: levels.map((level) => ({ + id: `level${level}`, + level, + displayName: `Level ${level}`, + })), + } + } + + if (resource === 'me') { + return { + organisationUnits: toUnits(user.organisationUnits), + dataViewOrganisationUnits: toUnits( + user.dataViewOrganisationUnits + ), + } + } + + const units = applyFilters(params.filter) + + return params.pageSize === 1 + ? { + pager: { total: units.length }, + organisationUnits: units.slice(0, 1), + } + : { organisationUnits: units } + } + + const createEngine = () => ({ + query: jest.fn(async (query) => + Object.fromEntries( + Object.entries(query).map(([key, request]) => [ + key, + answer(request), + ]) + ) + ), + }) + + return { answer, createEngine } +} diff --git a/src/__fixtures__/org-units/aggregation-levels.json b/src/__fixtures__/org-units/aggregation-levels.json new file mode 100644 index 000000000..521ab2187 --- /dev/null +++ b/src/__fixtures__/org-units/aggregation-levels.json @@ -0,0 +1,113 @@ +{ + "schemaVersion": 1, + "group": "aggregation-levels", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "12 of 12 cases, one per pattern", + "cases": [ + {"id":"ou-agg-d1-3__D1","item":{"code":"PTT_OU_AGG_D1_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set d1-3","periodType":"Monthly","orgUnits":["D1"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":3000,"contributes":["D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.40.12":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.10":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.6":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.1":{"status":"VALUE","value":3000,"rows":{"D1":3000}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-d1-3__F1","item":{"code":"PTT_OU_AGG_D1_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set d1-3","periodType":"Monthly","orgUnits":["D1"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["BELOW_COLLECTION"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-d1-3__region","item":{"code":"PTT_OU_AGG_D1_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set d1-3","periodType":"Monthly","orgUnits":["D1"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":3000,"contributes":["D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.40.12":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.41.10":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.42.6":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.43.1":{"status":"VALUE","value":3000,"rows":{"region":3000}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2__D1","item":{"code":"PTT_OU_AGG_F_2","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":33,"contributes":["F1","F2"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.40.12":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.41.10":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.42.6":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.43.1":{"status":"VALUE","value":33,"rows":{"D1":33}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2__F1","item":{"code":"PTT_OU_AGG_F_2","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2__region","item":{"code":"PTT_OU_AGG_F_2","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["AGGREGATION_LEVEL"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2-3__D1","item":{"code":"PTT_OU_AGG_F_2_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2,3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["AGGREGATION_LEVEL"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2-3__F1","item":{"code":"PTT_OU_AGG_F_2_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2,3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-2-3__region","item":{"code":"PTT_OU_AGG_F_2_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-2-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[2,3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["AGGREGATION_LEVEL"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-3__D1","item":{"code":"PTT_OU_AGG_F_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["AGGREGATION_LEVEL"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-3__F1","item":{"code":"PTT_OU_AGG_F_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-agg-f-3__region","item":{"code":"PTT_OU_AGG_F_3","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU aggregation levels data set f-3","periodType":"Monthly","orgUnits":["F1","F2","F3"],"aggregationLevels":[3]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["AGGREGATION_LEVEL"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/entered-above.json b/src/__fixtures__/org-units/entered-above.json new file mode 100644 index 000000000..597bf225c --- /dev/null +++ b/src/__fixtures__/org-units/entered-above.json @@ -0,0 +1,106 @@ +{ + "schemaVersion": 1, + "group": "entered-above", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "5 of 5 cases, one per pattern", + "cases": [ + {"id":"ou-above__D1","item":{"code":"PTT_OU_ABOVE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":3000,"contributes":["D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.40.12":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.10":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.6":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.1":{"status":"VALUE","value":3000,"rows":{"D1":3000}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-above__F1","item":{"code":"PTT_OU_ABOVE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["BELOW_COLLECTION"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-above__level-3-region","item":{"code":"PTT_OU_ABOVE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["LEVEL-3","region"]},"expected":{"status":"VALUE","value":3000,"contributes":["D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.40.12":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.41.10":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.42.6":{"status":"VALUE","value":3000,"rows":{"D1":3000}},"2.43.1":{"status":"VALUE","value":3000,"rows":{"D1":3000}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-above__level-4-region","item":{"code":"PTT_OU_ABOVE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["LEVEL-4","region"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["BELOW_COLLECTION"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-above__region","item":{"code":"PTT_OU_ABOVE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":3000,"contributes":["D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.40.12":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.41.10":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.42.6":{"status":"VALUE","value":3000,"rows":{"region":3000}},"2.43.1":{"status":"VALUE","value":3000,"rows":{"region":3000}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/mixed-levels.json b/src/__fixtures__/org-units/mixed-levels.json new file mode 100644 index 000000000..223572622 --- /dev/null +++ b/src/__fixtures__/org-units/mixed-levels.json @@ -0,0 +1,107 @@ +{ + "schemaVersion": 1, + "group": "mixed-levels", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "6 of 6 cases, one per pattern", + "cases": [ + {"id":"ou-mixed-element__D1","item":{"code":"PTT_OU_MIXED","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":3033,"contributes":["F1","F2","D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.40.12":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.41.10":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.42.6":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.43.1":{"status":"VALUE","value":3033,"rows":{"D1":3033}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-mixed-element__F1","item":{"code":"PTT_OU_MIXED","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"partial","reasons":["BELOW_COLLECTION"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-mixed-element__region","item":{"code":"PTT_OU_MIXED","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":3333,"contributes":["F1","F2","F3","D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.40.12":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.41.10":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.42.6":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.43.1":{"status":"VALUE","value":3333,"rows":{"region":3333}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-mixed-indicator__D1","item":{"code":"PTT_OU_IND_MIXED","dimensionItemType":"INDICATOR","numerator":"#{ciJTwyIYu2T}","denominator":"1","operands":[{"id":"ciJTwyIYu2T","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":3033,"contributes":["F1","F2","D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.40.12":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.41.10":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.42.6":{"status":"VALUE","value":3033,"rows":{"D1":3033}},"2.43.1":{"status":"VALUE","value":3033,"rows":{"D1":3033}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-mixed-indicator__F1","item":{"code":"PTT_OU_IND_MIXED","dimensionItemType":"INDICATOR","numerator":"#{ciJTwyIYu2T}","denominator":"1","operands":[{"id":"ciJTwyIYu2T","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"partial","reasons":["OPERAND_PARTIAL"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-mixed-indicator__region","item":{"code":"PTT_OU_IND_MIXED","dimensionItemType":"INDICATOR","numerator":"#{ciJTwyIYu2T}","denominator":"1","operands":[{"id":"ciJTwyIYu2T","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU mixed data set at facilities","periodType":"Monthly","orgUnits":["F1","F2","F3"]},{"dataSet":"PTT OU mixed data set at D1","periodType":"Monthly","orgUnits":["D1"]}]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":3333,"contributes":["F1","F2","F3","D1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.40.12":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.41.10":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.42.6":{"status":"VALUE","value":3333,"rows":{"region":3333}},"2.43.1":{"status":"VALUE","value":3333,"rows":{"region":3333}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/org-unit-groups.json b/src/__fixtures__/org-units/org-unit-groups.json new file mode 100644 index 000000000..dd8b482b8 --- /dev/null +++ b/src/__fixtures__/org-units/org-unit-groups.json @@ -0,0 +1,105 @@ +{ + "schemaVersion": 1, + "group": "org-unit-groups", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "4 of 4 cases, one per pattern", + "cases": [ + {"id":"ou-groups__empty","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-empty"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":null,"reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.40.12":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.10":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.6":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.1":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"ou-groups__g","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g"]},"expected":{"status":"VALUE","value":30303,"contributes":["D2","F3","F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.40.12":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.10":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.6":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.1":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-groups__g-in-D1","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g","D1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-groups__g-in-region","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g","region"]},"expected":{"status":"VALUE","value":30303,"contributes":["D2","F3","F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.40.12":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.10":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.6":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.1":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/org-unit-requests.json b/src/__fixtures__/org-units/org-unit-requests.json new file mode 100644 index 000000000..32b077d78 --- /dev/null +++ b/src/__fixtures__/org-units/org-unit-requests.json @@ -0,0 +1,2906 @@ +{ + "schemaVersion": 1, + "group": "org-unit-requests", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "findings": { + "2.44-SNAPSHOT": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "rZxk3S0qN63" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "RIinNUb6rg7" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.41.11-SNAPSHOT": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.42.7-SNAPSHOT": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.43.3-SNAPSHOT": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.40.12": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.41.10": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.42.6": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.43.1": { + "metadataShapes": [ + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_END", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_END", + "analyticsType": "EVENT", + "id": "U0mtkhBIEWK" + }, + { + "code": "PTT_PROG_PI_TRACKER_OWNER_START", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "OWNER_AT_START", + "analyticsType": "EVENT", + "id": "dXtvaBLgiA4" + }, + { + "code": "PTT_PROG_PI_TRACKER_REGISTRATION", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "REGISTRATION", + "analyticsType": "EVENT", + "id": "VwK2ljj07rP" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + } + }, + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "16 of 16 cases, one per pattern", + "cases": [ + {"id":"ou-request-count-child-in-group","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"VALUE","value":2},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-dataSet","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"VALUE","value":2},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-grandparent-in-group","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.40.12":{"status":"VALUE","value":3},"2.41.10":{"status":"VALUE","value":3},"2.42.6":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-grandparent-in-group-none","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1"},"expected":{"status":"EMPTY","value":0},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":0},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":0},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":0},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":0},"2.40.12":{"status":"EMPTY","value":0},"2.41.10":{"status":"EMPTY","value":0},"2.42.6":{"status":"EMPTY","value":0},"2.43.1":{"status":"EMPTY","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-group","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"VALUE","value":2},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-ids","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.40.12":{"status":"VALUE","value":3},"2.41.10":{"status":"VALUE","value":3},"2.42.6":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-level","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1169},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1169},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1169},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1169},"2.40.12":{"status":"VALUE","value":1169},"2.41.10":{"status":"VALUE","value":1169},"2.42.6":{"status":"VALUE","value":1169},"2.43.1":{"status":"VALUE","value":1169}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ou-request-count-path","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":9},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":9},"2.41.11-SNAPSHOT":{"status":"VALUE","value":9},"2.42.7-SNAPSHOT":{"status":"VALUE","value":9},"2.43.3-SNAPSHOT":{"status":"VALUE","value":9},"2.40.12":{"status":"VALUE","value":9},"2.41.10":{"status":"VALUE","value":9},"2.42.6":{"status":"VALUE","value":9},"2.43.1":{"status":"VALUE","value":9}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-count-program","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"VALUE","value":2},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-dataElements-aggregationLevels","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.41.11-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.40.12":{"status":"VALUE","value":4},"2.41.10":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-list-assigned-ancestors","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-me","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":null},"2.41.11-SNAPSHOT":{"status":"VALUE","value":null},"2.42.7-SNAPSHOT":{"status":"VALUE","value":null},"2.43.3-SNAPSHOT":{"status":"VALUE","value":null},"2.40.12":{"status":"VALUE","value":null},"2.41.10":{"status":"VALUE","value":null},"2.42.6":{"status":"VALUE","value":null},"2.43.1":{"status":"VALUE","value":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ou-request-me-ptt-user","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]","asUser":true},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":null},"2.41.11-SNAPSHOT":{"status":"VALUE","value":null},"2.42.7-SNAPSHOT":{"status":"VALUE","value":null},"2.43.3-SNAPSHOT":{"status":"VALUE","value":null},"2.40.12":{"status":"VALUE","value":null},"2.41.10":{"status":"VALUE","value":null},"2.42.6":{"status":"VALUE","value":null},"2.43.1":{"status":"VALUE","value":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ou-request-organisationUnitLevels","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.41.11-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.40.12":{"status":"VALUE","value":4},"2.41.10":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ou-request-programIndicators","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-request-programs","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"VALUE","value":2},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/partly-assigned.json b/src/__fixtures__/org-units/partly-assigned.json new file mode 100644 index 000000000..924e4fdeb --- /dev/null +++ b/src/__fixtures__/org-units/partly-assigned.json @@ -0,0 +1,106 @@ +{ + "schemaVersion": 1, + "group": "partly-assigned", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "5 of 5 cases, one per pattern", + "cases": [ + {"id":"ou-partly__D1","item":{"code":"PTT_OU_PARTLY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at F1 and F2","periodType":"Monthly","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D1"]},"expected":{"status":"VALUE","value":33,"contributes":["F1","F2"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.40.12":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.41.10":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.42.6":{"status":"VALUE","value":33,"rows":{"D1":33}},"2.43.1":{"status":"VALUE","value":33,"rows":{"D1":33}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-partly__D2","item":{"code":"PTT_OU_PARTLY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at F1 and F2","periodType":"Monthly","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["D2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["NOT_ASSIGNED"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-partly__F3","item":{"code":"PTT_OU_PARTLY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at F1 and F2","periodType":"Monthly","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["NOT_ASSIGNED"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-partly__level-4-region","item":{"code":"PTT_OU_PARTLY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at F1 and F2","periodType":"Monthly","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["LEVEL-4","region"]},"expected":{"status":"VALUE","value":33,"contributes":["F1","F2"],"compatibility":"full","reasons":["PARTLY_ASSIGNED"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.40.12":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.41.10":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.42.6":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}},"2.43.1":{"status":"VALUE","value":33,"rows":{"F1":3,"F2":30}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-partly__region","item":{"code":"PTT_OU_PARTLY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set at F1 and F2","periodType":"Monthly","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":33,"contributes":["F1","F2"],"compatibility":"full","reasons":["PARTLY_ASSIGNED"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"region":33}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"region":33}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"region":33}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":33,"rows":{"region":33}},"2.40.12":{"status":"VALUE","value":33,"rows":{"region":33}},"2.41.10":{"status":"VALUE","value":33,"rows":{"region":33}},"2.42.6":{"status":"VALUE","value":33,"rows":{"region":33}},"2.43.1":{"status":"VALUE","value":33,"rows":{"region":33}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/programs.json b/src/__fixtures__/org-units/programs.json new file mode 100644 index 000000000..5ea3d0dec --- /dev/null +++ b/src/__fixtures__/org-units/programs.json @@ -0,0 +1,129 @@ +{ + "schemaVersion": 1, + "group": "programs", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "28 of 28 cases, one per pattern", + "cases": [ + {"id":"ou-prog-event__F1","item":{"code":"PTT_PROG_PI_EVENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":3,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event__F2","item":{"code":"PTT_PROG_PI_EVENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F2":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event__F3","item":{"code":"PTT_PROG_PI_EVENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"none","reasons":["NOT_ASSIGNED"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event__region","item":{"code":"PTT_PROG_PI_EVENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":5,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5,"rows":{"region":5}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5,"rows":{"region":5}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5,"rows":{"region":5}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5,"rows":{"region":5}},"2.40.12":{"status":"VALUE","value":5,"rows":{"region":5}},"2.41.10":{"status":"VALUE","value":5,"rows":{"region":5}},"2.42.6":{"status":"VALUE","value":5,"rows":{"region":5}},"2.43.1":{"status":"VALUE","value":5,"rows":{"region":5}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event-place__F1","item":{"code":"PTT_PROG_PI_EVENT_PLACE","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"],"orgUnitField":"DATA_ELEMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event-place__F2","item":{"code":"PTT_PROG_PI_EVENT_PLACE","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"],"orgUnitField":"DATA_ELEMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event-place__F3","item":{"code":"PTT_PROG_PI_EVENT_PLACE","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"],"orgUnitField":"DATA_ELEMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"VALUE","value":1,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.40.12":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.41.10":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.42.6":{"status":"VALUE","value":1,"rows":{"F3":1}},"2.43.1":{"status":"VALUE","value":1,"rows":{"F3":1}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-event-place__region","item":{"code":"PTT_PROG_PI_EVENT_PLACE","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT event program","orgUnits":["F1","F2"],"orgUnitField":"DATA_ELEMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":1,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"region":1}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"region":1}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"region":1}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"rows":{"region":1}},"2.40.12":{"status":"VALUE","value":1,"rows":{"region":1}},"2.41.10":{"status":"VALUE","value":1,"rows":{"region":1}},"2.42.6":{"status":"VALUE","value":1,"rows":{"region":1}},"2.43.1":{"status":"VALUE","value":1,"rows":{"region":1}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker__F1","item":{"code":"PTT_PROG_PI_TRACKER","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F1":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker__F2","item":{"code":"PTT_PROG_PI_TRACKER","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker__F3","item":{"code":"PTT_PROG_PI_TRACKER","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker__region","item":{"code":"PTT_PROG_PI_TRACKER","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"region":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-enrollment__F1","item":{"code":"PTT_PROG_PI_TRACKER_ENROLLMENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"ENROLLMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F1":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-enrollment__F2","item":{"code":"PTT_PROG_PI_TRACKER_ENROLLMENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"ENROLLMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-enrollment__F3","item":{"code":"PTT_PROG_PI_TRACKER_ENROLLMENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"ENROLLMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-enrollment__region","item":{"code":"PTT_PROG_PI_TRACKER_ENROLLMENT","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"ENROLLMENT"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"region":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-end__F1","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_END","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_END"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F1":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-end__F2","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_END","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_END"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-end__F3","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_END","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_END"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-end__region","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_END","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_END"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"region":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-start__F1","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_START","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_START"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F1":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F1":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-start__F2","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_START","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_START"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-start__F3","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_START","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_START"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-owner-start__region","item":{"code":"PTT_PROG_PI_TRACKER_OWNER_START","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"OWNER_AT_START"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"region":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-registration__F1","item":{"code":"PTT_PROG_PI_TRACKER_REGISTRATION","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"REGISTRATION"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F1"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-registration__F2","item":{"code":"PTT_PROG_PI_TRACKER_REGISTRATION","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"REGISTRATION"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F2"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"F2":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"F2":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-registration__F3","item":{"code":"PTT_PROG_PI_TRACKER_REGISTRATION","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"REGISTRATION"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["F3"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"rows":{}},"2.40.12":{"status":"EMPTY","value":null,"rows":{}},"2.41.10":{"status":"EMPTY","value":null,"rows":{}},"2.42.6":{"status":"EMPTY","value":null,"rows":{}},"2.43.1":{"status":"EMPTY","value":null,"rows":{}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-prog-tracker-registration__region","item":{"code":"PTT_PROG_PI_TRACKER_REGISTRATION","dimensionItemType":"PROGRAM_INDICATOR","collectionSources":[{"program":"PTT tracker program","orgUnits":["F1","F2","F3"],"orgUnitField":"REGISTRATION"}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["region"]},"expected":{"status":"VALUE","value":2,"contributes":[],"compatibility":"full","reasons":["ORG_UNIT_FIELD"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2,"rows":{"region":2}},"2.40.12":{"status":"VALUE","value":2,"rows":{"region":2}},"2.41.10":{"status":"VALUE","value":2,"rows":{"region":2}},"2.42.6":{"status":"VALUE","value":2,"rows":{"region":2}},"2.43.1":{"status":"VALUE","value":2,"rows":{"region":2}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/org-units/user-org-units.json b/src/__fixtures__/org-units/user-org-units.json new file mode 100644 index 000000000..595b3f437 --- /dev/null +++ b/src/__fixtures__/org-units/user-org-units.json @@ -0,0 +1,104 @@ +{ + "schemaVersion": 1, + "group": "user-org-units", + "provisional": false, + "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "runs": [ + { + "instance": "dev", + "version": "2.44-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-41", + "version": "2.41.11-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-42", + "version": "2.42.7-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "dev-2-43", + "version": "2.43.3-SNAPSHOT", + "date": "2026-10-02" + }, + { + "instance": "stable-2-40-12", + "version": "2.40.12", + "date": "2026-10-02" + }, + { + "instance": "stable-2-41-10", + "version": "2.41.10", + "date": "2026-10-02" + }, + { + "instance": "stable-2-42-6", + "version": "2.42.6", + "date": "2026-10-02" + }, + { + "instance": "stable-2-43-1", + "version": "2.43.1", + "date": "2026-10-02" + } + ], + "hierarchy": { + "orgUnits": { + "region": { + "level": 2, + "parent": null + }, + "A": { + "level": 3, + "parent": "region" + }, + "B": { + "level": 3, + "parent": "region" + }, + "D1": { + "level": 3, + "parent": "region" + }, + "D2": { + "level": 3, + "parent": "region" + }, + "D3": { + "level": 3, + "parent": "region" + }, + "F1": { + "level": 4, + "parent": "D1" + }, + "F2": { + "level": 4, + "parent": "D1" + }, + "F3": { + "level": 4, + "parent": "D2" + } + }, + "groups": { + "g": [ + "D2", + "F1" + ], + "empty": [], + "top": [ + "region" + ] + } + }, + "smoke": "3 of 3 cases, one per pattern", + "cases": [ + {"id":"ou-user__children","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["USER_ORGUNIT_CHILDREN"]},"expected":{"status":"VALUE","value":333333,"contributes":["F1","F2","F3","D1","D2","D3"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.40.12":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.41.10":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.42.6":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}},"2.43.1":{"status":"VALUE","value":333333,"rows":{"D3":300000,"D1":3033,"D2":30300}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-user__grandchildren","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["USER_ORGUNIT_GRANDCHILDREN"]},"expected":{"status":"VALUE","value":333,"contributes":["F1","F2","F3"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.40.12":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.41.10":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.42.6":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}},"2.43.1":{"status":"VALUE","value":333,"rows":{"F1":3,"F2":30,"F3":300}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ou-user__user-orgunit","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["USER_ORGUNIT"]},"expected":{"status":"VALUE","value":333333,"contributes":["F1","F2","F3","D1","D2","D3"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.40.12":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.41.10":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.42.6":{"status":"VALUE","value":333333,"rows":{"region":333333}},"2.43.1":{"status":"VALUE","value":333333,"rows":{"region":333333}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} + ] +} diff --git a/src/__fixtures__/period-types/aggregation-by-period-type.json b/src/__fixtures__/period-types/aggregation-by-period-type.json index 010dbfa20..06ba4c2f8 100644 --- a/src/__fixtures__/period-types/aggregation-by-period-type.json +++ b/src/__fixtures__/period-types/aggregation-by-period-type.json @@ -7,13415 +7,448 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "smoke": "403 of 60306 cases, one per pattern", "cases": [ - { - "id": "agg-AVERAGE__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.40.12": { "status": "REPEATED", "value": 6 }, - "2.41.10": { "status": "REPEATED", "value": 6 }, - "2.42.6": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5.5 }, - "2.40.12": { "status": "VALUE", "value": 5.5 }, - "2.41.10": { "status": "VALUE", "value": 5.5 }, - "2.42.6": { "status": "VALUE", "value": 5.5 }, - "2.43.1": { "status": "VALUE", "value": 5.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, - "2.43.1": { "status": "VALUE", "value": 2.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 2.5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2.5 }, - "2.42.6": { "status": "VALUE", "value": 2.5 }, - "2.43.1": { "status": "VALUE", "value": 2.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6.5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6.5 }, - "2.42.6": { "status": "VALUE", "value": 6.5 }, - "2.43.1": { "status": "VALUE", "value": 6.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_AVG_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1.5833333333 - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1.5833333333 - }, - "2.43.1": { "status": "REPEATED", "value": 1.5833333333 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_AVG_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.40.12": { "status": "REPEATED", "value": 2.5 }, - "2.41.10": { "status": "REPEATED", "value": 2.5 }, - "2.42.6": { "status": "REPEATED", "value": 2.5 }, - "2.43.1": { "status": "REPEATED", "value": 2.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6666666667 - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6666666667 - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6666666667 - }, - "2.42.6": { "status": "REPEATED", "value": 1.6666666667 }, - "2.43.1": { "status": "REPEATED", "value": 1.6666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_AVG_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 4 }, - "2.42.6": { "status": "REPEATED", "value": 4 }, - "2.43.1": { "status": "REPEATED", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 51 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 51 }, - "2.43.1": { "status": "VALUE", "value": 51 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.40.12": { "status": "REPEATED", "value": 6 }, - "2.41.10": { "status": "REPEATED", "value": 6 }, - "2.42.6": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 5.4876712329 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5.4876712329 }, - "2.40.12": { "status": "VALUE", "value": 5.4876712329 }, - "2.41.10": { "status": "VALUE", "value": 5.4876712329 }, - "2.42.6": { "status": "VALUE", "value": 5.4876712329 }, - "2.43.1": { "status": "VALUE", "value": 5.4876712329 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, - "2.43.1": { "status": "VALUE", "value": 1.674863388 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1.674863387978142 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.674863388 }, - "2.42.6": { "status": "VALUE", "value": 1.674863388 }, - "2.43.1": { "status": "VALUE", "value": 1.674863388 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 8.4673913043 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8.4673913043 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 8.4673913043 }, - "2.42.6": { "status": "VALUE", "value": 8.4673913043 }, - "2.43.1": { "status": "VALUE", "value": 8.4673913043 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1.5801457195 - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1.5801457195 - }, - "2.43.1": { "status": "REPEATED", "value": 1.5801457195 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2.5 }, - "2.40.12": { "status": "REPEATED", "value": 2.5 }, - "2.41.10": { "status": "REPEATED", "value": 2.5 }, - "2.42.6": { "status": "REPEATED", "value": 2.5 }, - "2.43.1": { "status": "REPEATED", "value": 2.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6630236794 - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6675799087 - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1.6630236794 - }, - "2.42.6": { "status": "REPEATED", "value": 1.6675799087 }, - "2.43.1": { "status": "REPEATED", "value": 1.6630236794 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": 2 }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "REPEATED", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 4 }, - "2.42.6": { "status": "REPEATED", "value": 4 }, - "2.43.1": { "status": "REPEATED", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-AVERAGE_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_AVG_SUM_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 50.4456521739 }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 50.4456521739 - }, - "2.43.1": { "status": "VALUE", "value": 50.4456521739 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { "status": "VALUE", "value": 6 }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 4 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 2 }, - "2.42.6": { "status": "VALUE", "value": 2 }, - "2.43.1": { "status": "VALUE", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-COUNT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_COUNT_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_COUNT_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_COUNT_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_COUNT_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_COUNT_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_COUNT_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_COUNT_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-COUNT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_COUNT_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "COUNT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.43.1": { "status": "VALUE", "value": 13 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { "status": "REPEATED", "value": 1 }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 2 }, - "2.42.6": { "status": "VALUE", "value": 2 }, - "2.43.1": { "status": "VALUE", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { "status": "REPEATED", "value": 1 }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 2 }, - "2.42.6": { "status": "VALUE", "value": 2 }, - "2.43.1": { "status": "VALUE", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_AVG_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { "status": "REPEATED", "value": 1 }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 2 }, - "2.42.6": { "status": "VALUE", "value": 2 }, - "2.43.1": { "status": "VALUE", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-FIRST_FIRST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_FIRST_FIRST_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_FIRST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.40.12": { "status": "REPEATED", "value": 6 }, - "2.41.10": { "status": "REPEATED", "value": 6 }, - "2.42.6": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 4 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 4 }, - "2.42.6": { "status": "REPEATED", "value": 4 }, - "2.43.1": { "status": "REPEATED", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.40.12": { "status": "REPEATED", "value": 6 }, - "2.41.10": { "status": "REPEATED", "value": 6 }, - "2.42.6": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 4 }, - "2.42.6": { "status": "REPEATED", "value": 4 }, - "2.43.1": { "status": "REPEATED", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_AVG_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LIP_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LIP_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LIP_AVG_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.40.12": { "status": "REPEATED", "value": 6 }, - "2.41.10": { "status": "REPEATED", "value": 6 }, - "2.42.6": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 6 }, - "2.43.1": { "status": "REPEATED", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialFeb", - "period": "2024Feb", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { "status": "REPEATED", "value": 2 }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialFeb", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialFeb"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialNov"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 4 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 4 }, - "2.42.6": { "status": "REPEATED", "value": 4 }, - "2.43.1": { "status": "REPEATED", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_SixMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["SixMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 2 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 2 }, - "2.42.6": { "status": "REPEATED", "value": 2 }, - "2.43.1": { "status": "REPEATED", "value": 2 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "agg-LAST_LAST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_LAST_LAST_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_LAST_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.40.12": { "status": "VALUE", "value": 8 }, - "2.41.10": { "status": "VALUE", "value": 8 }, - "2.42.6": { "status": "VALUE", "value": 8 }, - "2.43.1": { "status": "VALUE", "value": 8 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 4 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_MAX_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_MAX_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MAX_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 8 }, - "2.40.12": { "status": "VALUE", "value": 8 }, - "2.41.10": { "status": "VALUE", "value": 8 }, - "2.42.6": { "status": "VALUE", "value": 8 }, - "2.43.1": { "status": "VALUE", "value": 8 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MAX_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MAX_SUM_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MAX_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 57 }, - "2.43.1": { "status": "VALUE", "value": 57 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.40.12": { "status": "VALUE", "value": 3 }, - "2.41.10": { "status": "VALUE", "value": 3 }, - "2.42.6": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_MIN_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_MIN_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MIN_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 45 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 45 }, - "2.43.1": { "status": "VALUE", "value": 45 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.40.12": { "status": "VALUE", "value": 3 }, - "2.41.10": { "status": "VALUE", "value": 3 }, - "2.42.6": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 6 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 6 }, - "2.42.6": { "status": "VALUE", "value": 6 }, - "2.43.1": { "status": "VALUE", "value": 6 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-MIN_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_MIN_SUM_OU_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "MIN_SUM_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 45 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 45 }, - "2.43.1": { "status": "VALUE", "value": 45 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_NONE_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_NONE_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_NONE_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_NONE_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_NONE_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_NONE_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_NONE_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.41.11-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.42.7-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.42.6": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-NONE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_NONE_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "NONE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "ERROR", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" - }, - "2.43.3-SNAPSHOT": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" - }, - "2.43.1": { - "status": "ERROR", - "value": null, - "error": "E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`" - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.40.12": { "status": "VALUE", "value": 0 }, - "2.41.10": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1.8708286934 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.8708286934 }, - "2.40.12": { "status": "VALUE", "value": 1.8708286934 }, - "2.41.10": { "status": "VALUE", "value": 1.8708286934 }, - "2.42.6": { "status": "VALUE", "value": 1.8708286934 }, - "2.43.1": { "status": "VALUE", "value": 1.8708286934 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, - "2.43.1": { "status": "VALUE", "value": 1.2909944487 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2909944487 }, - "2.42.6": { "status": "VALUE", "value": 1.2909944487 }, - "2.43.1": { "status": "VALUE", "value": 1.2909944487 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 0.7071067812 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.7071067812 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 0.7071067812 }, - "2.42.6": { "status": "VALUE", "value": 0.7071067812 }, - "2.43.1": { "status": "VALUE", "value": 0.7071067812 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_STDDEV_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-STDDEV__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-STDDEV__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_STDDEV_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "STDDEV", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3.8944404818 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3.8944404818 }, - "2.43.1": { "status": "VALUE", "value": 3.8944404818 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 7 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 7 }, - "2.40.12": { "status": "VALUE", "value": 7 }, - "2.41.10": { "status": "VALUE", "value": 7 }, - "2.42.6": { "status": "VALUE", "value": 7 }, - "2.43.1": { "status": "VALUE", "value": 7 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 33 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 33 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 33 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 33 }, - "2.40.12": { "status": "VALUE", "value": 33 }, - "2.41.10": { "status": "VALUE", "value": 33 }, - "2.42.6": { "status": "VALUE", "value": 33 }, - "2.43.1": { "status": "VALUE", "value": 33 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 10 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 10 }, - "2.43.1": { "status": "VALUE", "value": 10 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 10 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 10 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 10 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 10 }, - "2.42.6": { "status": "VALUE", "value": 10 }, - "2.43.1": { "status": "VALUE", "value": 10 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 13 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 13 }, - "2.42.6": { "status": "VALUE", "value": 13 }, - "2.43.1": { "status": "VALUE", "value": 13 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-SUM__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_SUM_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_SUM_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_SUM_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_SUM_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_SUM_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_SUM_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_SUM_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-SUM__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_SUM_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 663 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 663 }, - "2.43.1": { "status": "VALUE", "value": 663 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.40.12": { "status": "VALUE", "value": 0 }, - "2.41.10": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-FinancialApril__p-2024April__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialApril", - "period": "2024April", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3.5 }, - "2.40.12": { "status": "VALUE", "value": 3.5 }, - "2.41.10": { "status": "VALUE", "value": 3.5 }, - "2.42.6": { "status": "VALUE", "value": 3.5 }, - "2.43.1": { "status": "VALUE", "value": 3.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, - "2.43.1": { "status": "VALUE", "value": 1.6666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.6666666667 }, - "2.42.6": { "status": "VALUE", "value": 1.6666666667 }, - "2.43.1": { "status": "VALUE", "value": 1.6666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 0.5 }, - "2.42.6": { "status": "VALUE", "value": 0.5 }, - "2.43.1": { "status": "VALUE", "value": 0.5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G1_VAR_BiMonthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiMonthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialApril__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_VAR_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialApril__q-FinancialJuly__p-2024July__A", - "item": { - "code": "PTT_G1_VAR_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialJuly", - "period": "2024July", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialApril__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_VAR_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialAug__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G1_VAR_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialSep__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G1_VAR_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-FinancialSep__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G1_VAR_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_Quarterly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "agg-VARIANCE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_QuarterlyNov", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["QuarterlyNov"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 0 }, - "2.42.6": { "status": "VALUE", "value": 0 }, - "2.43.1": { "status": "VALUE", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "agg-VARIANCE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G1_VAR_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "VARIANCE", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 15.1666666667 }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 15.1666666667 - }, - "2.43.1": { "status": "VALUE", "value": 15.1666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - } + {"id":"agg-AVERAGE__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5.5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5.5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5.5},"2.40.12":{"status":"VALUE","value":5.5},"2.41.10":{"status":"VALUE","value":5.5},"2.42.6":{"status":"VALUE","value":5.5},"2.43.1":{"status":"VALUE","value":5.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2.5},"2.43.1":{"status":"VALUE","value":2.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":2.5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2.5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2.5},"2.42.6":{"status":"VALUE","value":2.5},"2.43.1":{"status":"VALUE","value":2.5}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6.5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6.5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6.5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6.5},"2.42.6":{"status":"VALUE","value":6.5},"2.43.1":{"status":"VALUE","value":6.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_AVG_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1.5833333333},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1.5833333333},"2.43.1":{"status":"REPEATED","value":1.5833333333}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_AVG_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.40.12":{"status":"REPEATED","value":2.5},"2.41.10":{"status":"REPEATED","value":2.5},"2.42.6":{"status":"REPEATED","value":2.5},"2.43.1":{"status":"REPEATED","value":2.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1.6666666667},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1.6666666667},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1.6666666667},"2.42.6":{"status":"REPEATED","value":1.6666666667},"2.43.1":{"status":"REPEATED","value":1.6666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_AVG_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":51},"2.43.3-SNAPSHOT":{"status":"VALUE","value":51},"2.43.1":{"status":"VALUE","value":51}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5.4876712329},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5.4876712329},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5.4876712329},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5.4876712329},"2.40.12":{"status":"VALUE","value":5.4876712329},"2.41.10":{"status":"VALUE","value":5.4876712329},"2.42.6":{"status":"VALUE","value":5.4876712329},"2.43.1":{"status":"VALUE","value":5.4876712329}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.674863388},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.674863388},"2.43.1":{"status":"VALUE","value":1.674863388}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1.674863387978142},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.674863388},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.674863388},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.674863388},"2.42.6":{"status":"VALUE","value":1.674863388},"2.43.1":{"status":"VALUE","value":1.674863388}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":8.4673913043},"2.41.11-SNAPSHOT":{"status":"VALUE","value":8.4673913043},"2.42.7-SNAPSHOT":{"status":"VALUE","value":8.4673913043},"2.43.3-SNAPSHOT":{"status":"VALUE","value":8.4673913043},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":8.4673913043},"2.42.6":{"status":"VALUE","value":8.4673913043},"2.43.1":{"status":"VALUE","value":8.4673913043}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_AVG_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1.5801457195},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1.5801457195},"2.43.1":{"status":"REPEATED","value":1.5801457195}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2.5},"2.40.12":{"status":"REPEATED","value":2.5},"2.41.10":{"status":"REPEATED","value":2.5},"2.42.6":{"status":"REPEATED","value":2.5},"2.43.1":{"status":"REPEATED","value":2.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1.6630236794},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1.6675799087},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1.6630236794},"2.42.6":{"status":"REPEATED","value":1.6675799087},"2.43.1":{"status":"REPEATED","value":1.6630236794}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-AVERAGE_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_AVG_SUM_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":50.4456521739},"2.43.3-SNAPSHOT":{"status":"VALUE","value":50.4456521739},"2.43.1":{"status":"VALUE","value":50.4456521739}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-COUNT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"VALUE","value":6},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-COUNT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-COUNT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-COUNT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_COUNT_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_COUNT_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_COUNT_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_COUNT_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_COUNT_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_COUNT_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_COUNT_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-COUNT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":13},"2.43.3-SNAPSHOT":{"status":"VALUE","value":13},"2.43.1":{"status":"VALUE","value":13}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LIP_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LIP_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":8},"2.41.11-SNAPSHOT":{"status":"VALUE","value":8},"2.42.7-SNAPSHOT":{"status":"VALUE","value":8},"2.43.3-SNAPSHOT":{"status":"VALUE","value":8},"2.40.12":{"status":"VALUE","value":8},"2.41.10":{"status":"VALUE","value":8},"2.42.6":{"status":"VALUE","value":8},"2.43.1":{"status":"VALUE","value":8}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_MAX_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MAX_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":8},"2.41.11-SNAPSHOT":{"status":"VALUE","value":8},"2.42.7-SNAPSHOT":{"status":"VALUE","value":8},"2.43.3-SNAPSHOT":{"status":"VALUE","value":8},"2.40.12":{"status":"VALUE","value":8},"2.41.10":{"status":"VALUE","value":8},"2.42.6":{"status":"VALUE","value":8},"2.43.1":{"status":"VALUE","value":8}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_MAX_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MAX_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MAX_SUM_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.40.12":{"status":"VALUE","value":3},"2.41.10":{"status":"VALUE","value":3},"2.42.6":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_MIN_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_MIN_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MIN_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":45},"2.43.3-SNAPSHOT":{"status":"VALUE","value":45},"2.43.1":{"status":"VALUE","value":45}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.40.12":{"status":"VALUE","value":3},"2.41.10":{"status":"VALUE","value":3},"2.42.6":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_MIN_SUM_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-MIN_SUM_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_MIN_SUM_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"MIN_SUM_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":45},"2.43.3-SNAPSHOT":{"status":"VALUE","value":45},"2.43.1":{"status":"VALUE","value":45}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-NONE__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.40.12":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.40.12":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.40.12":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_NONE_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[XDSZDkGkmtJ]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_NONE_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_NONE_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.40.12":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_NONE_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[wpF6jTXcbOo]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_NONE_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[ZzBnkzMGZym]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_NONE_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_NONE_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[RqiFEO5xtay]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[vXy44pRCQCT]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.42.6":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[cOxFW3SkO4p]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-NONE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_NONE_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"NONE","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"ERROR","value":null},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`"},"2.43.1":{"status":"ERROR","value":null,"error":"E7115: Data elements must be of a value and aggregation type that allow aggregation: `[iCp9VVH5GPI]`"}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.40.12":{"status":"VALUE","value":0},"2.41.10":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.8708286934},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1.8708286934},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.8708286934},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.8708286934},"2.40.12":{"status":"VALUE","value":1.8708286934},"2.41.10":{"status":"VALUE","value":1.8708286934},"2.42.6":{"status":"VALUE","value":1.8708286934},"2.43.1":{"status":"VALUE","value":1.8708286934}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.2909944487},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.2909944487},"2.43.1":{"status":"VALUE","value":1.2909944487}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.2909944487},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.2909944487},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.2909944487},"2.42.6":{"status":"VALUE","value":1.2909944487},"2.43.1":{"status":"VALUE","value":1.2909944487}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.7071067812},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0.7071067812},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.7071067812},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.7071067812},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":0.7071067812},"2.42.6":{"status":"VALUE","value":0.7071067812},"2.43.1":{"status":"VALUE","value":0.7071067812}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_STDDEV_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_STDDEV_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_STDDEV_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_STDDEV_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_STDDEV_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_STDDEV_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_STDDEV_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-STDDEV__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-STDDEV__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_STDDEV_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"STDDEV","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3.8944404818},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3.8944404818},"2.43.1":{"status":"VALUE","value":3.8944404818}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-SUM__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":33},"2.41.11-SNAPSHOT":{"status":"VALUE","value":33},"2.42.7-SNAPSHOT":{"status":"VALUE","value":33},"2.43.3-SNAPSHOT":{"status":"VALUE","value":33},"2.40.12":{"status":"VALUE","value":33},"2.41.10":{"status":"VALUE","value":33},"2.42.6":{"status":"VALUE","value":33},"2.43.1":{"status":"VALUE","value":33}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-SUM__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":10},"2.43.3-SNAPSHOT":{"status":"VALUE","value":10},"2.43.1":{"status":"VALUE","value":10}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-SUM__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":10},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":10},"2.42.7-SNAPSHOT":{"status":"VALUE","value":10},"2.43.3-SNAPSHOT":{"status":"VALUE","value":10},"2.42.6":{"status":"VALUE","value":10},"2.43.1":{"status":"VALUE","value":10}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":13},"2.41.11-SNAPSHOT":{"status":"VALUE","value":13},"2.42.7-SNAPSHOT":{"status":"VALUE","value":13},"2.43.3-SNAPSHOT":{"status":"VALUE","value":13},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":13},"2.42.6":{"status":"VALUE","value":13},"2.43.1":{"status":"VALUE","value":13}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-SUM__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_SUM_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_SUM_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_SUM_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_SUM_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_SUM_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_SUM_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_SUM_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-SUM__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_SUM_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":663},"2.43.3-SNAPSHOT":{"status":"VALUE","value":663},"2.43.1":{"status":"VALUE","value":663}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.40.12":{"status":"VALUE","value":0},"2.41.10":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3.5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3.5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3.5},"2.40.12":{"status":"VALUE","value":3.5},"2.41.10":{"status":"VALUE","value":3.5},"2.42.6":{"status":"VALUE","value":3.5},"2.43.1":{"status":"VALUE","value":3.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.6666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.6666666667},"2.43.1":{"status":"VALUE","value":1.6666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.6666666667},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.6666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.6666666667},"2.42.6":{"status":"VALUE","value":1.6666666667},"2.43.1":{"status":"VALUE","value":1.6666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0.5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":0.5},"2.42.6":{"status":"VALUE","value":0.5},"2.43.1":{"status":"VALUE","value":0.5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_VAR_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_VAR_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_VAR_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_VAR_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_VAR_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_VAR_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_VAR_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-VARIANCE__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":0},"2.42.6":{"status":"VALUE","value":0},"2.43.1":{"status":"VALUE","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-VARIANCE__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_VAR_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"VARIANCE","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":15.1666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":15.1666666667},"2.43.1":{"status":"VALUE","value":15.1666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}} ] } diff --git a/src/__fixtures__/period-types/carry-windows.json b/src/__fixtures__/period-types/carry-windows.json index 9e3125cf4..d980d935c 100644 --- a/src/__fixtures__/period-types/carry-windows.json +++ b/src/__fixtures__/period-types/carry-windows.json @@ -7,42 +7,42 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "findings": { @@ -131,31 +131,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -187,31 +197,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -279,7 +299,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -347,7 +369,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -415,7 +439,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -640,31 +666,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -696,31 +732,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -788,7 +834,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -856,7 +904,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -924,7 +974,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -1149,31 +1201,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -1205,31 +1267,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -1297,7 +1369,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -1365,7 +1439,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -1433,7 +1509,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -1658,31 +1736,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -1714,31 +1802,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -1806,7 +1904,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -1874,7 +1974,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -1942,7 +2044,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -2167,31 +2271,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -2223,31 +2337,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -2315,7 +2439,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -2383,7 +2509,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -2451,7 +2579,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -2676,31 +2806,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -2732,31 +2872,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -2824,7 +2974,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -2892,7 +3044,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -2960,7 +3114,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -3185,31 +3341,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -3241,31 +3407,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -3333,7 +3509,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -3401,7 +3579,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -3469,7 +3649,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -3694,31 +3876,41 @@ }, "FIRST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT Weekly": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD Weekly": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 441, "missed": [ { @@ -3750,31 +3942,41 @@ }, "FIRST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], - "matched": 634, + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], + "matched": 634, "missed": [] }, "FIRST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_AVERAGE_ORG_UNIT WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, mixed-year>=q-0"], + "bestRules": [ + "end<=q.end, mixed-year>=q-0" + ], "matched": 634, "missed": [] }, "LAST_IN_PERIOD WeeklyWednesday": { "cases": 634, - "bestRules": ["end<=q.end, date-year>=q-0"], + "bestRules": [ + "end<=q.end, date-year>=q-0" + ], "matched": 442, "missed": [ { @@ -3842,7 +4044,9 @@ }, "LAST_IN_PERIOD Monthly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 405, "missed": [ { @@ -3910,7 +4114,9 @@ }, "LAST_IN_PERIOD Quarterly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 414, "missed": [ { @@ -3978,7 +4184,9 @@ }, "LAST_IN_PERIOD Yearly": { "cases": 634, - "bestRules": ["end<=q.end, id-year>=q-0"], + "bestRules": [ + "end<=q.end, id-year>=q-0" + ], "matched": 621, "missed": [ { @@ -4121,2307 +4329,43 @@ }, "smoke": "38 of 22246 cases, one per pattern", "cases": [ - { - "id": "carry-dense-FIRST__col-Daily__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-Daily__q-Daily__p-20240101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-Daily__q-FinancialApril__p-2022April__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2022April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-Daily__q-FinancialApril__p-2023April__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2023April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-FinancialApril__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-FinancialApril__q-Yearly__p-2023__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Yearly", - "period": "2023", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-Monthly__q-Daily__p-20240201__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Monthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240201", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "202401" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_Weekly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2024WedW11", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2022April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2023April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Yearly", - "period": "2023", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Monthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240201", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "202401" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", - "item": { - "code": "PTT_G7_DENSE_FIRST_AVG_OU_Weekly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "FIRST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2024WedW11", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "2024W1" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Daily__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Daily__q-Daily__p-20240101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Daily__q-FinancialApril__p-2022April__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2022April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Daily__q-FinancialApril__p-2023April__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2023April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.40.12": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.10": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.6": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.1": { - "status": "VALUE", - "value": 91, - "source": "20240331" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-FinancialApril__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-FinancialApril__q-Yearly__p-2023__A", - "item": { - "code": "PTT_G7_DENSE_LAST_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Yearly", - "period": "2023", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Monthly__q-Daily__p-20240201__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Monthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240201", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "202401" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", - "item": { - "code": "PTT_G7_DENSE_LAST_Weekly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2024WedW11", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.40.12": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.41.10": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.42.6": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.43.1": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2022April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2023April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.40.12": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.10": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.6": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.1": { - "status": "VALUE", - "value": 91, - "source": "20240331" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Yearly", - "period": "2023", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Monthly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240201", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.40.12": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.41.10": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.42.6": { - "status": "REPEATED", - "value": 1, - "source": "202401" - }, - "2.43.1": { - "status": "REPEATED", - "value": 1, - "source": "202401" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A", - "item": { - "code": "PTT_G7_DENSE_LAST_AVG_OU_Weekly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_AVERAGE_ORG_UNIT", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Layout dense." - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2024WedW11", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.41.11-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.42.7-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.43.3-SNAPSHOT": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.40.12": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.41.10": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.42.6": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - }, - "2.43.1": { - "status": "REPEATED", - "value": 11, - "source": "2024W11" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LIP_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20240101__A", - "item": { - "code": "PTT_G7_DENSE_LIP_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20240101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.40.12": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.41.10": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.42.6": { - "status": "VALUE", - "value": 1, - "source": "20240101" - }, - "2.43.1": { - "status": "VALUE", - "value": 1, - "source": "20240101" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2022April__A", - "item": { - "code": "PTT_G7_DENSE_LIP_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2022April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2023April__A", - "item": { - "code": "PTT_G7_DENSE_LIP_Daily", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Daily"], - "notes": "Layout dense." - }, - "query": { - "periodType": "FinancialApril", - "period": "2023April", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.40.12": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.41.10": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.42.6": { - "status": "VALUE", - "value": 91, - "source": "20240331" - }, - "2.43.1": { - "status": "VALUE", - "value": 91, - "source": "20240331" - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Daily__p-20230101__A", - "item": { - "code": "PTT_G7_DENSE_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Daily", - "period": "20230101", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Yearly__p-2023__A", - "item": { - "code": "PTT_G7_DENSE_LIP_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "LAST_IN_PERIOD", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"], - "notes": "Layout dense." - }, - "query": { - "periodType": "Yearly", - "period": "2023", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "source": null - }, - "2.40.12": { "status": "EMPTY", "value": null, "source": null }, - "2.41.10": { "status": "EMPTY", "value": null, "source": null }, - "2.42.6": { "status": "EMPTY", "value": null, "source": null }, - "2.43.1": { "status": "EMPTY", "value": null, "source": null } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - } + {"id":"carry-dense-FIRST__col-Daily__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_FIRST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-Daily__q-Daily__p-20240101__A","item":{"code":"PTT_G7_DENSE_FIRST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-Daily__q-FinancialApril__p-2022April__A","item":{"code":"PTT_G7_DENSE_FIRST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2022April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-Daily__q-FinancialApril__p-2023April__A","item":{"code":"PTT_G7_DENSE_FIRST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2023April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-FinancialApril__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-FinancialApril__q-Yearly__p-2023__A","item":{"code":"PTT_G7_DENSE_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Yearly","period":"2023","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-Monthly__q-Daily__p-20240201__A","item":{"code":"PTT_G7_DENSE_FIRST_Monthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240201","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.40.12":{"status":"REPEATED","value":1,"source":"202401"},"2.41.10":{"status":"REPEATED","value":1,"source":"202401"},"2.42.6":{"status":"REPEATED","value":1,"source":"202401"},"2.43.1":{"status":"REPEATED","value":1,"source":"202401"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A","item":{"code":"PTT_G7_DENSE_FIRST_Weekly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Layout dense."},"query":{"periodType":"WeeklyWednesday","period":"2024WedW11","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.40.12":{"status":"REPEATED","value":1,"source":"2024W1"},"2.41.10":{"status":"REPEATED","value":1,"source":"2024W1"},"2.42.6":{"status":"REPEATED","value":1,"source":"2024W1"},"2.43.1":{"status":"REPEATED","value":1,"source":"2024W1"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2022April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2023April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Yearly","period":"2023","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Monthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240201","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.40.12":{"status":"REPEATED","value":1,"source":"202401"},"2.41.10":{"status":"REPEATED","value":1,"source":"202401"},"2.42.6":{"status":"REPEATED","value":1,"source":"202401"},"2.43.1":{"status":"REPEATED","value":1,"source":"202401"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-FIRST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A","item":{"code":"PTT_G7_DENSE_FIRST_AVG_OU_Weekly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Layout dense."},"query":{"periodType":"WeeklyWednesday","period":"2024WedW11","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"2024W1"},"2.40.12":{"status":"REPEATED","value":1,"source":"2024W1"},"2.41.10":{"status":"REPEATED","value":1,"source":"2024W1"},"2.42.6":{"status":"REPEATED","value":1,"source":"2024W1"},"2.43.1":{"status":"REPEATED","value":1,"source":"2024W1"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Daily__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LAST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Daily__q-Daily__p-20240101__A","item":{"code":"PTT_G7_DENSE_LAST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Daily__q-FinancialApril__p-2022April__A","item":{"code":"PTT_G7_DENSE_LAST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2022April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Daily__q-FinancialApril__p-2023April__A","item":{"code":"PTT_G7_DENSE_LAST_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2023April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.40.12":{"status":"VALUE","value":91,"source":"20240331"},"2.41.10":{"status":"VALUE","value":91,"source":"20240331"},"2.42.6":{"status":"VALUE","value":91,"source":"20240331"},"2.43.1":{"status":"VALUE","value":91,"source":"20240331"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-FinancialApril__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-FinancialApril__q-Yearly__p-2023__A","item":{"code":"PTT_G7_DENSE_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Yearly","period":"2023","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Monthly__q-Daily__p-20240201__A","item":{"code":"PTT_G7_DENSE_LAST_Monthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240201","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.40.12":{"status":"REPEATED","value":1,"source":"202401"},"2.41.10":{"status":"REPEATED","value":1,"source":"202401"},"2.42.6":{"status":"REPEATED","value":1,"source":"202401"},"2.43.1":{"status":"REPEATED","value":1,"source":"202401"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A","item":{"code":"PTT_G7_DENSE_LAST_Weekly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Layout dense."},"query":{"periodType":"WeeklyWednesday","period":"2024WedW11","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.40.12":{"status":"REPEATED","value":11,"source":"2024W11"},"2.41.10":{"status":"REPEATED","value":11,"source":"2024W11"},"2.42.6":{"status":"REPEATED","value":11,"source":"2024W11"},"2.43.1":{"status":"REPEATED","value":11,"source":"2024W11"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-Daily__p-20240101__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2022April__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2022April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Daily__q-FinancialApril__p-2023April__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2023April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.40.12":{"status":"VALUE","value":91,"source":"20240331"},"2.41.10":{"status":"VALUE","value":91,"source":"20240331"},"2.42.6":{"status":"VALUE","value":91,"source":"20240331"},"2.43.1":{"status":"VALUE","value":91,"source":"20240331"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2023__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Yearly","period":"2023","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Monthly__q-Daily__p-20240201__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Monthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240201","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1,"source":"202401"},"2.40.12":{"status":"REPEATED","value":1,"source":"202401"},"2.41.10":{"status":"REPEATED","value":1,"source":"202401"},"2.42.6":{"status":"REPEATED","value":1,"source":"202401"},"2.43.1":{"status":"REPEATED","value":1,"source":"202401"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_AVERAGE_ORG_UNIT__col-Weekly__q-WeeklyWednesday__p-2024WedW11__A","item":{"code":"PTT_G7_DENSE_LAST_AVG_OU_Weekly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Layout dense."},"query":{"periodType":"WeeklyWednesday","period":"2024WedW11","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":11,"source":"2024W11"},"2.40.12":{"status":"REPEATED","value":11,"source":"2024W11"},"2.41.10":{"status":"REPEATED","value":11,"source":"2024W11"},"2.42.6":{"status":"REPEATED","value":11,"source":"2024W11"},"2.43.1":{"status":"REPEATED","value":11,"source":"2024W11"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LIP_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-Daily__q-Daily__p-20240101__A","item":{"code":"PTT_G7_DENSE_LIP_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20240101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1,"source":"20240101"},"2.40.12":{"status":"VALUE","value":1,"source":"20240101"},"2.41.10":{"status":"VALUE","value":1,"source":"20240101"},"2.42.6":{"status":"VALUE","value":1,"source":"20240101"},"2.43.1":{"status":"VALUE","value":1,"source":"20240101"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2022April__A","item":{"code":"PTT_G7_DENSE_LIP_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2022April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-Daily__q-FinancialApril__p-2023April__A","item":{"code":"PTT_G7_DENSE_LIP_Daily","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["Daily"],"notes":"Layout dense."},"query":{"periodType":"FinancialApril","period":"2023April","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.41.11-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.42.7-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.43.3-SNAPSHOT":{"status":"VALUE","value":91,"source":"20240331"},"2.40.12":{"status":"VALUE","value":91,"source":"20240331"},"2.41.10":{"status":"VALUE","value":91,"source":"20240331"},"2.42.6":{"status":"VALUE","value":91,"source":"20240331"},"2.43.1":{"status":"VALUE","value":91,"source":"20240331"}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Daily__p-20230101__A","item":{"code":"PTT_G7_DENSE_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Daily","period":"20230101","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"carry-dense-LAST_IN_PERIOD__col-FinancialApril__q-Yearly__p-2023__A","item":{"code":"PTT_G7_DENSE_LIP_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"],"notes":"Layout dense."},"query":{"periodType":"Yearly","period":"2023","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"source":null},"2.40.12":{"status":"EMPTY","value":null,"source":null},"2.41.10":{"status":"EMPTY","value":null,"source":null},"2.42.6":{"status":"EMPTY","value":null,"source":null},"2.43.1":{"status":"EMPTY","value":null,"source":null}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}} ] } diff --git a/src/__fixtures__/period-types/detection-requests.json b/src/__fixtures__/period-types/detection-requests.json index 13590b1ee..06e7d010f 100644 --- a/src/__fixtures__/period-types/detection-requests.json +++ b/src/__fixtures__/period-types/detection-requests.json @@ -7,950 +7,62 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "smoke": "17 of 46 cases, one per pattern", "cases": [ - { - "id": "meta-aggregationTypes", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/schemas/dataElement.json?fields=properties[fieldName,constants]" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-dataElements", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.40.12": { "status": "VALUE", "value": 4 }, - "2.41.10": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-dataElements-dataSets", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,dataSets[id,periodType]&paging=false&order=code:asc" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 4 }, - "2.40.12": { "status": "VALUE", "value": 4 }, - "2.41.10": { "status": "VALUE", "value": 4 }, - "2.42.6": { "status": "VALUE", "value": 4 }, - "2.43.1": { "status": "VALUE", "value": 4 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-dataItems", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/dataItems.json?filter=name:ilike:PTT G4&fields=id,name,dimensionItemType,expression,aggregationType,valueType&paging=false&order=name:asc" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 17 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 17 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 17 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 17 }, - "2.40.12": { "status": "VALUE", "value": 17 }, - "2.41.10": { "status": "VALUE", "value": 17 }, - "2.42.6": { "status": "VALUE", "value": 17 }, - "2.43.1": { "status": "VALUE", "value": 17 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-dataSets", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { "status": "VALUE", "value": 5 }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-expressionDimensionItems", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-indicators", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 11 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 11 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 11 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 11 }, - "2.40.12": { "status": "VALUE", "value": 11 }, - "2.41.10": { "status": "VALUE", "value": 11 }, - "2.42.6": { "status": "VALUE", "value": 11 }, - "2.43.1": { "status": "VALUE", "value": 11 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "meta-periodTypes", - "item": { - "notes": "Metadata request; the response is in metadata-shapes.json." - }, - "query": { - "request": "/api/periodTypes.json?fields=name,isoFormat,isoDuration,frequencyOrder" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 24 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 19 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 20 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 24 }, - "2.40.12": { "status": "VALUE", "value": 19 }, - "2.41.10": { "status": "VALUE", "value": 19 }, - "2.42.6": { "status": "VALUE", "value": 20 }, - "2.43.1": { "status": "VALUE", "value": 24 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-history__r-2024__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left." - }, - "query": { - "request": "rawData", - "startDate": "2024-01-01", - "endDate": "2024-12-31", - "orgUnit": "A" - }, - "expected": { - "status": "VALUE", - "value": null, - "periodTypes": ["Monthly"] - }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-mw__r-2024__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B." - }, - "query": { - "request": "rawData", - "startDate": "2024-01-01", - "endDate": "2024-12-31", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-mw__r-2025__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B." - }, - "query": { - "request": "rawData", - "startDate": "2025-01-01", - "endDate": "2025-12-31", - "orgUnit": "A" - }, - "expected": { - "status": "VALUE", - "value": null, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.40.12": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.41.10": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.42.6": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - }, - "2.43.1": { - "status": "VALUE", - "value": 24, - "periodTypes": ["Weekly", "WeeklyWednesday"] - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-orphan__r-2024__A", - "item": { - "code": "PTT_G3_ORPHAN", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": [], - "notes": "Monthly values, then removed from its only data set." - }, - "query": { - "request": "rawData", - "startDate": "2024-01-01", - "endDate": "2024-12-31", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-orphan__r-2025__A", - "item": { - "code": "PTT_G3_ORPHAN", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": [], - "notes": "Monthly values, then removed from its only data set." - }, - "query": { - "request": "rawData", - "startDate": "2025-01-01", - "endDate": "2025-12-31", - "orgUnit": "A" - }, - "expected": { - "status": "VALUE", - "value": null, - "periodTypes": ["Monthly"] - }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-place__r-2024__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B." - }, - "query": { - "request": "rawData", - "startDate": "2024-01-01", - "endDate": "2024-12-31", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null, "periodTypes": [] }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": 0, - "periodTypes": [] - }, - "2.40.12": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.41.10": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.42.6": { "status": "EMPTY", "value": 0, "periodTypes": [] }, - "2.43.1": { "status": "EMPTY", "value": 0, "periodTypes": [] } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-place__r-2025__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B." - }, - "query": { - "request": "rawData", - "startDate": "2025-01-01", - "endDate": "2025-12-31", - "orgUnit": "A" - }, - "expected": { - "status": "VALUE", - "value": null, - "periodTypes": ["Monthly"] - }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Monthly"] - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "raw-range-inside-only", - "item": { - "code": "PTT_G1_SUM_Weekly", - "notes": "And PTT_G1_SUM_Monthly." - }, - "query": { - "request": "rawData", - "startDate": "2025-04-15", - "endDate": "2025-05-15", - "orgUnit": "A" - }, - "expected": { "status": null, "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "periodTypes": ["Weekly"], - "periods": ["2025W17", "2025W18", "2025W19"] - } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "raw-row-limit", - "item": { - "notes": "G1 elements but NONE, collected Daily, Weekly, WeeklyWednesday, WeeklyThursday, WeeklyFriday, WeeklySaturday, WeeklySunday, BiWeekly, Monthly: 51408 values." - }, - "query": { - "request": "rawData", - "startDate": "2024-01-01", - "endDate": "2025-12-31", - "orgUnit": "A;B" - }, - "expected": { "status": "VALUE", "value": 51408 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 51408, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklyFriday", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 47700, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 47700, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 51408, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklyFriday", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.40.12": { - "status": "VALUE", - "value": 47700, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.41.10": { - "status": "VALUE", - "value": 47700, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.42.6": { - "status": "VALUE", - "value": 47700, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - }, - "2.43.1": { - "status": "VALUE", - "value": 51408, - "periodTypes": [ - "BiWeekly", - "Daily", - "Monthly", - "Weekly", - "WeeklyFriday", - "WeeklySaturday", - "WeeklySunday", - "WeeklyThursday", - "WeeklyWednesday" - ] - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - } + {"id":"meta-aggregationTypes","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/schemas/dataElement.json?fields=properties[fieldName,constants]"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-dataElements","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.41.11-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.40.12":{"status":"VALUE","value":4},"2.41.10":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-dataElements-dataSets","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,dataSets[id,periodType]&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.41.11-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.40.12":{"status":"VALUE","value":4},"2.41.10":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-dataItems","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/dataItems.json?filter=name:ilike:PTT G4&fields=id,name,dimensionItemType,expression,aggregationType,valueType&paging=false&order=name:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":17},"2.41.11-SNAPSHOT":{"status":"VALUE","value":17},"2.42.7-SNAPSHOT":{"status":"VALUE","value":17},"2.43.3-SNAPSHOT":{"status":"VALUE","value":17},"2.40.12":{"status":"VALUE","value":17},"2.41.10":{"status":"VALUE","value":17},"2.42.6":{"status":"VALUE","value":17},"2.43.1":{"status":"VALUE","value":17}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-dataSets","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"VALUE","value":5},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-expressionDimensionItems","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-indicators","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":11},"2.41.11-SNAPSHOT":{"status":"VALUE","value":11},"2.42.7-SNAPSHOT":{"status":"VALUE","value":11},"2.43.3-SNAPSHOT":{"status":"VALUE","value":11},"2.40.12":{"status":"VALUE","value":11},"2.41.10":{"status":"VALUE","value":11},"2.42.6":{"status":"VALUE","value":11},"2.43.1":{"status":"VALUE","value":11}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"meta-periodTypes","item":{"notes":"Metadata request; the response is in metadata-shapes.json."},"query":{"request":"/api/periodTypes.json?fields=name,isoFormat,isoDuration,frequencyOrder"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":24},"2.41.11-SNAPSHOT":{"status":"VALUE","value":19},"2.42.7-SNAPSHOT":{"status":"VALUE","value":20},"2.43.3-SNAPSHOT":{"status":"VALUE","value":24},"2.40.12":{"status":"VALUE","value":19},"2.41.10":{"status":"VALUE","value":19},"2.42.6":{"status":"VALUE","value":20},"2.43.1":{"status":"VALUE","value":24}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-history__r-2024__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left."},"query":{"request":"rawData","startDate":"2024-01-01","endDate":"2024-12-31","orgUnit":"A"},"expected":{"status":"VALUE","value":null,"periodTypes":["Monthly"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.40.12":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.10":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.6":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.1":{"status":"VALUE","value":3,"periodTypes":["Monthly"]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-mw__r-2024__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B."},"query":{"request":"rawData","startDate":"2024-01-01","endDate":"2024-12-31","orgUnit":"A"},"expected":{"status":"EMPTY","value":null,"periodTypes":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.40.12":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.10":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.6":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.1":{"status":"EMPTY","value":0,"periodTypes":[]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-mw__r-2025__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B."},"query":{"request":"rawData","startDate":"2025-01-01","endDate":"2025-12-31","orgUnit":"A"},"expected":{"status":"VALUE","value":null,"periodTypes":["Weekly","WeeklyWednesday"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.40.12":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.41.10":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.42.6":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]},"2.43.1":{"status":"VALUE","value":24,"periodTypes":["Weekly","WeeklyWednesday"]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-orphan__r-2024__A","item":{"code":"PTT_G3_ORPHAN","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":[],"notes":"Monthly values, then removed from its only data set."},"query":{"request":"rawData","startDate":"2024-01-01","endDate":"2024-12-31","orgUnit":"A"},"expected":{"status":"EMPTY","value":null,"periodTypes":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.40.12":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.10":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.6":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.1":{"status":"EMPTY","value":0,"periodTypes":[]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-orphan__r-2025__A","item":{"code":"PTT_G3_ORPHAN","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":[],"notes":"Monthly values, then removed from its only data set."},"query":{"request":"rawData","startDate":"2025-01-01","endDate":"2025-12-31","orgUnit":"A"},"expected":{"status":"VALUE","value":null,"periodTypes":["Monthly"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.40.12":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.10":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.6":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.1":{"status":"VALUE","value":3,"periodTypes":["Monthly"]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-place__r-2024__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B."},"query":{"request":"rawData","startDate":"2024-01-01","endDate":"2024-12-31","orgUnit":"A"},"expected":{"status":"EMPTY","value":null,"periodTypes":[]},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":0,"periodTypes":[]},"2.40.12":{"status":"EMPTY","value":0,"periodTypes":[]},"2.41.10":{"status":"EMPTY","value":0,"periodTypes":[]},"2.42.6":{"status":"EMPTY","value":0,"periodTypes":[]},"2.43.1":{"status":"EMPTY","value":0,"periodTypes":[]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-place__r-2025__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B."},"query":{"request":"rawData","startDate":"2025-01-01","endDate":"2025-12-31","orgUnit":"A"},"expected":{"status":"VALUE","value":null,"periodTypes":["Monthly"]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.40.12":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.41.10":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.42.6":{"status":"VALUE","value":3,"periodTypes":["Monthly"]},"2.43.1":{"status":"VALUE","value":3,"periodTypes":["Monthly"]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"raw-range-inside-only","item":{"code":"PTT_G1_SUM_Weekly","notes":"And PTT_G1_SUM_Monthly."},"query":{"request":"rawData","startDate":"2025-04-15","endDate":"2025-05-15","orgUnit":"A"},"expected":{"status":null,"value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.40.12":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.41.10":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.42.6":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]},"2.43.1":{"status":"VALUE","value":3,"periodTypes":["Weekly"],"periods":["2025W17","2025W18","2025W19"]}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"raw-row-limit","item":{"notes":"G1 elements but NONE, collected Daily, Weekly, WeeklyWednesday, WeeklyThursday, WeeklyFriday, WeeklySaturday, WeeklySunday, BiWeekly, Monthly: 51408 values."},"query":{"request":"rawData","startDate":"2024-01-01","endDate":"2025-12-31","orgUnit":"A;B"},"expected":{"status":"VALUE","value":51408},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":51408,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklyFriday","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.41.11-SNAPSHOT":{"status":"VALUE","value":47700,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.42.7-SNAPSHOT":{"status":"VALUE","value":47700,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.43.3-SNAPSHOT":{"status":"VALUE","value":51408,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklyFriday","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.40.12":{"status":"VALUE","value":47700,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.41.10":{"status":"VALUE","value":47700,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.42.6":{"status":"VALUE","value":47700,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]},"2.43.1":{"status":"VALUE","value":51408,"periodTypes":["BiWeekly","Daily","Monthly","Weekly","WeeklyFriday","WeeklySaturday","WeeklySunday","WeeklyThursday","WeeklyWednesday"]}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} ] } diff --git a/src/__fixtures__/period-types/indicators-and-expressions.json b/src/__fixtures__/period-types/indicators-and-expressions.json index b47738ef2..93f495b1a 100644 --- a/src/__fixtures__/period-types/indicators-and-expressions.json +++ b/src/__fixtures__/period-types/indicators-and-expressions.json @@ -7,3421 +7,124 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "smoke": "79 of 1656 cases, one per pattern and 13 the library's tests name", "cases": [ - { - "id": "ind-constant__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_CONSTANT", - "dimensionItemType": "INDICATOR", - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { "status": "VALUE", "value": 5 }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-constant__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_CONSTANT", - "dimensionItemType": "INDICATOR", - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-constant__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_CONSTANT", - "dimensionItemType": "INDICATOR", - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-constant__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_CONSTANT", - "dimensionItemType": "INDICATOR", - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 5 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 5 }, - "2.42.6": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-averaged__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 0.20454545454545456 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 0.2045454545 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2045454545 }, - "2.40.12": { "status": "VALUE", "value": 0.2045454545 }, - "2.41.10": { "status": "VALUE", "value": 0.2045454545 }, - "2.42.6": { "status": "VALUE", "value": 0.2045454545 }, - "2.43.1": { "status": "VALUE", "value": 0.2045454545 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-averaged__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-averaged__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2326958106 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2326958106 }, - "2.43.1": { "status": "VALUE", "value": 0.2326958106 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, - "2.42.6": { "status": "VALUE", "value": 0.3 }, - "2.43.1": { "status": "VALUE", "value": 0.2991803279 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.3 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 0.3 }, - "2.42.6": { "status": "VALUE", "value": 0.3 }, - "2.43.1": { "status": "VALUE", "value": 0.3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1.2654083205 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.2654083205 }, - "2.40.12": { "status": "VALUE", "value": 1.2654083205 }, - "2.41.10": { "status": "VALUE", "value": 1.2654083205 }, - "2.42.6": { "status": "VALUE", "value": 1.2654083205 }, - "2.43.1": { "status": "VALUE", "value": 1.2654083205 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2320600297 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2320600297 }, - "2.43.1": { "status": "VALUE", "value": 0.2320600297 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.2983628953 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.2991803279 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.2983628953 }, - "2.42.6": { "status": "VALUE", "value": 0.2991803279 }, - "2.43.1": { "status": "VALUE", "value": 0.2983628953 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 1.1902173913 - }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1.1902173913 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1.1902173913 }, - "2.42.6": { "status": "VALUE", "value": 1.1902173913 }, - "2.43.1": { "status": "VALUE", "value": 1.1902173913 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-coverage-averaged-annualized__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "annualized": true, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "UB785RAqE9h", - "ref": "popAvg", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "AVERAGE_SUM_ORG_UNIT", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-summed__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "nxyiifFYsbc", - "ref": "popSum", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-summed__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "nxyiifFYsbc", - "ref": "popSum", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-summed__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "nxyiifFYsbc", - "ref": "popSum", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-summed__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "nxyiifFYsbc", - "ref": "popSum", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-coverage-summed__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - }, - { - "id": "nxyiifFYsbc", - "ref": "popSum", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Yearly"] - } - ] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 0.65 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 0.65 }, - "2.40.12": { "status": "VALUE", "value": 0.65 }, - "2.41.10": { "status": "VALUE", "value": 0.65 }, - "2.42.6": { "status": "VALUE", "value": 0.65 }, - "2.43.1": { "status": "VALUE", "value": 0.65 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-days__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_DAYS", - "dimensionItemType": "INDICATOR", - "numerator": "[days]", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 59 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.40.12": { "status": "VALUE", "value": 59 }, - "2.41.10": { "status": "VALUE", "value": 59 }, - "2.42.6": { "status": "VALUE", "value": 59 }, - "2.43.1": { "status": "VALUE", "value": 59 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-days__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_DAYS", - "dimensionItemType": "INDICATOR", - "numerator": "[days]", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 366 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.1": { "status": "VALUE", "value": 366 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-days__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_DAYS", - "dimensionItemType": "INDICATOR", - "numerator": "[days]", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 366 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.42.6": { "status": "VALUE", "value": 366 }, - "2.43.1": { "status": "VALUE", "value": 366 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-days__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_DAYS", - "dimensionItemType": "INDICATOR", - "numerator": "[days]", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 92 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 92 }, - "2.42.6": { "status": "VALUE", "value": 92 }, - "2.43.1": { "status": "VALUE", "value": 92 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 27 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.40.12": { "status": "VALUE", "value": 27 }, - "2.41.10": { "status": "VALUE", "value": 27 }, - "2.42.6": { "status": "VALUE", "value": 27 }, - "2.43.1": { "status": "VALUE", "value": 27 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 28 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.1": { "status": "VALUE", "value": 28 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_DE", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 27 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.40.12": { "status": "VALUE", "value": 27 }, - "2.41.10": { "status": "VALUE", "value": 27 }, - "2.42.6": { "status": "VALUE", "value": 27 }, - "2.43.1": { "status": "VALUE", "value": 27 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 28 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.1": { "status": "VALUE", "value": 28 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-de-coc__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_DE_COC", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF.HllvX50cXC0}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 54 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 54 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 54 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 54 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 54 }, - "2.40.12": { "status": "VALUE", "value": 54 }, - "2.41.10": { "status": "VALUE", "value": 54 }, - "2.42.6": { "status": "VALUE", "value": 54 }, - "2.43.1": { "status": "VALUE", "value": 54 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 56 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 56 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 56 }, - "2.43.1": { "status": "VALUE", "value": 56 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 72 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.42.6": { "status": "VALUE", "value": 72 }, - "2.43.1": { "status": "VALUE", "value": 72 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 72 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 72 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 72 }, - "2.42.6": { "status": "VALUE", "value": 72 }, - "2.43.1": { "status": "VALUE", "value": 72 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-expression__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_EXPRESSION", - "dimensionItemType": "EXPRESSION_DIMENSION_ITEM", - "expression": "#{BeN8IzxwwJF}*2", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 27 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.40.12": { "status": "VALUE", "value": 27 }, - "2.41.10": { "status": "VALUE", "value": 27 }, - "2.42.6": { "status": "VALUE", "value": 27 }, - "2.43.1": { "status": "VALUE", "value": 27 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 28 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.1": { "status": "VALUE", "value": 28 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-indicator__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_INDICATOR", - "dimensionItemType": "INDICATOR", - "numerator": "N{qxTEoP6Na0L}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "qxTEoP6Na0L", - "ref": "indicator-de", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}", - "denominator": "1", - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-org-unit-group__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_ORG_UNIT_GROUP", - "dimensionItemType": "INDICATOR", - "numerator": "OUG{PSXFPFGOyIb}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-org-unit-group__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_ORG_UNIT_GROUP", - "dimensionItemType": "INDICATOR", - "numerator": "OUG{PSXFPFGOyIb}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-org-unit-group__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_ORG_UNIT_GROUP", - "dimensionItemType": "INDICATOR", - "numerator": "OUG{PSXFPFGOyIb}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-org-unit-group__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_ORG_UNIT_GROUP", - "dimensionItemType": "INDICATOR", - "numerator": "OUG{PSXFPFGOyIb}", - "denominator": "1", - "annualized": false, - "operands": [] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-period-offset__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 23 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 23 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 23 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 23 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 23 }, - "2.40.12": { "status": "VALUE", "value": 23 }, - "2.41.10": { "status": "VALUE", "value": 23 }, - "2.42.6": { "status": "VALUE", "value": 23 }, - "2.43.1": { "status": "VALUE", "value": 23 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialAug__p-2023Aug__B", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "B" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialAug__p-2023Aug__region", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "region" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialAug__p-2024Aug__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2024Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 28 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 28 }, - "2.43.1": { "status": "VALUE", "value": 28 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialNov__p-2024Nov__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialNov", - "period": "2024Nov", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialNov__p-2024Nov__B", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialNov", - "period": "2024Nov", - "orgUnit": "B" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialNov__p-2024Nov__region", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialNov", - "period": "2024Nov", - "orgUnit": "region" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialOct__p-2023Oct__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialOct", - "period": "2023Oct", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialOct__p-2023Oct__B", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialOct", - "period": "2023Oct", - "orgUnit": "B" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialOct__p-2023Oct__region", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialOct", - "period": "2023Oct", - "orgUnit": "region" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialSep__p-2023Sep__B", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "B" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialSep__p-2023Sep__region", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "region" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-FinancialSep__p-2024Sep__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2024Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 36 }, - "2.42.6": { "status": "VALUE", "value": 36 }, - "2.43.1": { "status": "VALUE", "value": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 27 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 27 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 27 }, - "2.42.6": { "status": "VALUE", "value": 27 }, - "2.43.1": { "status": "VALUE", "value": 27 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-Yearly__p-2024__B", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "B" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-period-offset__q-Yearly__p-2024__region", - "item": { - "code": "PTT_G4_IND_PERIOD_OFFSET", - "dimensionItemType": "INDICATOR", - "numerator": "#{BeN8IzxwwJF}.periodOffset(-1)", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "BeN8IzxwwJF", - "ref": "count", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "region" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "ind-reporting-rate__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.40.12": { "status": "VALUE", "value": 100 }, - "2.41.10": { "status": "VALUE", "value": 100 }, - "2.42.6": { "status": "VALUE", "value": 100 }, - "2.43.1": { "status": "VALUE", "value": 100 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-reporting-rate__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "ind-reporting-rate__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 58.3333333333 }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 58.3333333333 - }, - "2.43.1": { "status": "VALUE", "value": 58.3333333333 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-reporting-rate__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 66.6666666667 }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 66.6666666667 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 66.6666666667 - }, - "2.42.6": { "status": "VALUE", "value": 66.6666666667 }, - "2.43.1": { "status": "VALUE", "value": 66.6666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-reporting-rate__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 100 }, - "2.42.6": { "status": "VALUE", "value": 100 }, - "2.43.1": { "status": "VALUE", "value": 100 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "fail", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "ind-reporting-rate__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G4_IND_REPORTING_RATE", - "dimensionItemType": "INDICATOR", - "numerator": "R{FUvJSlEH9B3.REPORTING_RATE}", - "denominator": "1", - "annualized": false, - "operands": [ - { - "id": "FUvJSlEH9B3", - "ref": "rate", - "dimensionItemType": "REPORTING_RATE", - "aggregationType": "SUM", - "collectionPeriodTypes": ["Monthly"] - } - ] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - } + {"id":"ind-constant__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_CONSTANT","dimensionItemType":"INDICATOR","numerator":"C{Wi6GdGCugf3}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"VALUE","value":5},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-constant__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_CONSTANT","dimensionItemType":"INDICATOR","numerator":"C{Wi6GdGCugf3}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-constant__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_CONSTANT","dimensionItemType":"INDICATOR","numerator":"C{Wi6GdGCugf3}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-constant__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_CONSTANT","dimensionItemType":"INDICATOR","numerator":"C{Wi6GdGCugf3}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-averaged__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":0.20454545454545456},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.2045454545},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0.2045454545},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.2045454545},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.2045454545},"2.40.12":{"status":"VALUE","value":0.2045454545},"2.41.10":{"status":"VALUE","value":0.2045454545},"2.42.6":{"status":"VALUE","value":0.2045454545},"2.43.1":{"status":"VALUE","value":0.2045454545}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-averaged__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-averaged__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.2326958106},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.2326958106},"2.43.1":{"status":"VALUE","value":0.2326958106}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.2991803279},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.2991803279},"2.42.6":{"status":"VALUE","value":0.3},"2.43.1":{"status":"VALUE","value":0.2991803279}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0.3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.3},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":0.3},"2.42.6":{"status":"VALUE","value":0.3},"2.43.1":{"status":"VALUE","value":0.3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-averaged-annualized__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.2654083205},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1.2654083205},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.2654083205},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.2654083205},"2.40.12":{"status":"VALUE","value":1.2654083205},"2.41.10":{"status":"VALUE","value":1.2654083205},"2.42.6":{"status":"VALUE","value":1.2654083205},"2.43.1":{"status":"VALUE","value":1.2654083205}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged-annualized__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-averaged-annualized__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.2320600297},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.2320600297},"2.43.1":{"status":"VALUE","value":0.2320600297}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged-annualized__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.2983628953},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.2991803279},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.2983628953},"2.42.6":{"status":"VALUE","value":0.2991803279},"2.43.1":{"status":"VALUE","value":0.2983628953}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged-annualized__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1.1902173913},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1.1902173913},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1.1902173913},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1.1902173913},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1.1902173913},"2.42.6":{"status":"VALUE","value":1.1902173913},"2.43.1":{"status":"VALUE","value":1.1902173913}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-coverage-averaged-annualized__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{UB785RAqE9h}","annualized":true,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"UB785RAqE9h","ref":"popAvg","dimensionItemType":"DATA_ELEMENT","aggregationType":"AVERAGE_SUM_ORG_UNIT","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-summed__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_COVERAGE_SUMMED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{nxyiifFYsbc}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"nxyiifFYsbc","ref":"popSum","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-summed__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_COVERAGE_SUMMED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{nxyiifFYsbc}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"nxyiifFYsbc","ref":"popSum","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-summed__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_COVERAGE_SUMMED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{nxyiifFYsbc}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"nxyiifFYsbc","ref":"popSum","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-summed__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_COVERAGE_SUMMED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{nxyiifFYsbc}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"nxyiifFYsbc","ref":"popSum","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-coverage-summed__q-Yearly__p-2024__A","item":{"code":"PTT_G4_IND_COVERAGE_SUMMED","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"#{nxyiifFYsbc}","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]},{"id":"nxyiifFYsbc","ref":"popSum","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Yearly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"VALUE","value":0.65},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":0.65},"2.41.11-SNAPSHOT":{"status":"VALUE","value":0.65},"2.42.7-SNAPSHOT":{"status":"VALUE","value":0.65},"2.43.3-SNAPSHOT":{"status":"VALUE","value":0.65},"2.40.12":{"status":"VALUE","value":0.65},"2.41.10":{"status":"VALUE","value":0.65},"2.42.6":{"status":"VALUE","value":0.65},"2.43.1":{"status":"VALUE","value":0.65}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-days__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_DAYS","dimensionItemType":"INDICATOR","numerator":"[days]","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":59},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":59},"2.41.11-SNAPSHOT":{"status":"VALUE","value":59},"2.42.7-SNAPSHOT":{"status":"VALUE","value":59},"2.43.3-SNAPSHOT":{"status":"VALUE","value":59},"2.40.12":{"status":"VALUE","value":59},"2.41.10":{"status":"VALUE","value":59},"2.42.6":{"status":"VALUE","value":59},"2.43.1":{"status":"VALUE","value":59}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-days__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_DAYS","dimensionItemType":"INDICATOR","numerator":"[days]","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-days__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_DAYS","dimensionItemType":"INDICATOR","numerator":"[days]","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.42.7-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.42.6":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-days__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_DAYS","dimensionItemType":"INDICATOR","numerator":"[days]","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":92},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":92},"2.41.11-SNAPSHOT":{"status":"VALUE","value":92},"2.42.7-SNAPSHOT":{"status":"VALUE","value":92},"2.43.3-SNAPSHOT":{"status":"VALUE","value":92},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":92},"2.42.6":{"status":"VALUE","value":92},"2.43.1":{"status":"VALUE","value":92}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":27},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":27},"2.41.11-SNAPSHOT":{"status":"VALUE","value":27},"2.42.7-SNAPSHOT":{"status":"VALUE","value":27},"2.43.3-SNAPSHOT":{"status":"VALUE","value":27},"2.40.12":{"status":"VALUE","value":27},"2.41.10":{"status":"VALUE","value":27},"2.42.6":{"status":"VALUE","value":27},"2.43.1":{"status":"VALUE","value":27}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":28},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":28},"2.43.3-SNAPSHOT":{"status":"VALUE","value":28},"2.43.1":{"status":"VALUE","value":28}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.41.11-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_DE","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":27},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":27},"2.41.11-SNAPSHOT":{"status":"VALUE","value":27},"2.42.7-SNAPSHOT":{"status":"VALUE","value":27},"2.43.3-SNAPSHOT":{"status":"VALUE","value":27},"2.40.12":{"status":"VALUE","value":27},"2.41.10":{"status":"VALUE","value":27},"2.42.6":{"status":"VALUE","value":27},"2.43.1":{"status":"VALUE","value":27}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":28},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":28},"2.43.3-SNAPSHOT":{"status":"VALUE","value":28},"2.43.1":{"status":"VALUE","value":28}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.41.11-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-de-coc__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_DE_COC","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF.HllvX50cXC0}","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":54},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":54},"2.41.11-SNAPSHOT":{"status":"VALUE","value":54},"2.42.7-SNAPSHOT":{"status":"VALUE","value":54},"2.43.3-SNAPSHOT":{"status":"VALUE","value":54},"2.40.12":{"status":"VALUE","value":54},"2.41.10":{"status":"VALUE","value":54},"2.42.6":{"status":"VALUE","value":54},"2.43.1":{"status":"VALUE","value":54}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":56},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":56},"2.43.3-SNAPSHOT":{"status":"VALUE","value":56},"2.43.1":{"status":"VALUE","value":56}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":72},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":72},"2.42.7-SNAPSHOT":{"status":"VALUE","value":72},"2.43.3-SNAPSHOT":{"status":"VALUE","value":72},"2.42.6":{"status":"VALUE","value":72},"2.43.1":{"status":"VALUE","value":72}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":72},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":72},"2.41.11-SNAPSHOT":{"status":"VALUE","value":72},"2.42.7-SNAPSHOT":{"status":"VALUE","value":72},"2.43.3-SNAPSHOT":{"status":"VALUE","value":72},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":72},"2.42.6":{"status":"VALUE","value":72},"2.43.1":{"status":"VALUE","value":72}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-expression__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_EXPRESSION","dimensionItemType":"EXPRESSION_DIMENSION_ITEM","expression":"#{BeN8IzxwwJF}*2","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":27},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":27},"2.41.11-SNAPSHOT":{"status":"VALUE","value":27},"2.42.7-SNAPSHOT":{"status":"VALUE","value":27},"2.43.3-SNAPSHOT":{"status":"VALUE","value":27},"2.40.12":{"status":"VALUE","value":27},"2.41.10":{"status":"VALUE","value":27},"2.42.6":{"status":"VALUE","value":27},"2.43.1":{"status":"VALUE","value":27}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":28},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":28},"2.43.3-SNAPSHOT":{"status":"VALUE","value":28},"2.43.1":{"status":"VALUE","value":28}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.41.11-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-indicator__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_INDICATOR","dimensionItemType":"INDICATOR","numerator":"N{qxTEoP6Na0L}","denominator":"1","annualized":false,"operands":[{"id":"qxTEoP6Na0L","ref":"indicator-de","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}","denominator":"1","operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-org-unit-group__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_ORG_UNIT_GROUP","dimensionItemType":"INDICATOR","numerator":"OUG{PSXFPFGOyIb}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-org-unit-group__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_ORG_UNIT_GROUP","dimensionItemType":"INDICATOR","numerator":"OUG{PSXFPFGOyIb}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"ind-org-unit-group__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_ORG_UNIT_GROUP","dimensionItemType":"INDICATOR","numerator":"OUG{PSXFPFGOyIb}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-org-unit-group__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_ORG_UNIT_GROUP","dimensionItemType":"INDICATOR","numerator":"OUG{PSXFPFGOyIb}","denominator":"1","annualized":false,"operands":[]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-period-offset__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":23},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":23},"2.41.11-SNAPSHOT":{"status":"VALUE","value":23},"2.42.7-SNAPSHOT":{"status":"VALUE","value":23},"2.43.3-SNAPSHOT":{"status":"VALUE","value":23},"2.40.12":{"status":"VALUE","value":23},"2.41.10":{"status":"VALUE","value":23},"2.42.6":{"status":"VALUE","value":23},"2.43.1":{"status":"VALUE","value":23}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialAug__p-2023Aug__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialAug__p-2023Aug__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialAug__p-2024Aug__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2024Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":28},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":28},"2.43.3-SNAPSHOT":{"status":"VALUE","value":28},"2.43.1":{"status":"VALUE","value":28}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialNov__p-2024Nov__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialNov","period":"2024Nov","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialNov__p-2024Nov__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialNov","period":"2024Nov","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialNov__p-2024Nov__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialNov","period":"2024Nov","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialOct__p-2023Oct__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialOct","period":"2023Oct","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialOct__p-2023Oct__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialOct","period":"2023Oct","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialOct__p-2023Oct__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialOct","period":"2023Oct","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialSep__p-2023Sep__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialSep__p-2023Sep__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-FinancialSep__p-2024Sep__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2024Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36},"2.42.6":{"status":"VALUE","value":36},"2.43.1":{"status":"VALUE","value":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":27},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":27},"2.41.11-SNAPSHOT":{"status":"VALUE","value":27},"2.42.7-SNAPSHOT":{"status":"VALUE","value":27},"2.43.3-SNAPSHOT":{"status":"VALUE","value":27},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":27},"2.42.6":{"status":"VALUE","value":27},"2.43.1":{"status":"VALUE","value":27}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-Yearly__p-2024__A","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-Yearly__p-2024__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-period-offset__q-Yearly__p-2024__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"ind-reporting-rate__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-reporting-rate__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"ind-reporting-rate__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":58.3333333333},"2.43.3-SNAPSHOT":{"status":"VALUE","value":58.3333333333},"2.43.1":{"status":"VALUE","value":58.3333333333}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"ind-reporting-rate__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.42.7-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.42.6":{"status":"VALUE","value":66.6666666667},"2.43.1":{"status":"VALUE","value":66.6666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-reporting-rate__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"ind-reporting-rate__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}} ] } diff --git a/src/__fixtures__/period-types/metadata-shapes.json b/src/__fixtures__/period-types/metadata-shapes.json index 71882e71f..ff0094b3c 100644 --- a/src/__fixtures__/period-types/metadata-shapes.json +++ b/src/__fixtures__/period-types/metadata-shapes.json @@ -4,7 +4,7 @@ "versions": { "2.44-SNAPSHOT": { "instance": "dev", - "date": "2026-10-01", + "date": "2026-10-02", "requests": [ { "name": "dataElements", @@ -68,14 +68,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "periodType": "Monthly", + "id": "Zp46A37uZSE" } }, { "dataSet": { - "periodType": "Monthly", - "id": "Zp46A37uZSE" + "periodType": "Weekly", + "id": "EBLMCfwOuUT" } } ], @@ -211,12 +211,332 @@ } ] } + }, + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "rZxk3S0qN63" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "RIinNUb6rg7" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "gist": true, + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } } ] }, "2.41.11-SNAPSHOT": { "instance": "dev-2-41", - "date": "2026-10-01", + "date": "2026-10-02", "requests": [ { "name": "dataElements", @@ -249,14 +569,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Weekly", + "id": "YlravvdHwIj" } }, { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" } } ], @@ -280,14 +600,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "periodType": "Monthly", + "id": "Zp46A37uZSE" } }, { "dataSet": { - "periodType": "Monthly", - "id": "Zp46A37uZSE" + "periodType": "Weekly", + "id": "EBLMCfwOuUT" } } ], @@ -423,224 +743,329 @@ } ] } - } - ] - }, - "2.42.7-SNAPSHOT": { - "instance": "dev-2-42", - "date": "2026-10-01", - "requests": [ + }, { - "name": "dataElements", - "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", "httpStatus": 200, "response": { "dataElements": [ { - "code": "PTT_G3_HISTORY", - "name": "PTT G3 history", + "code": "PTT_OU_AGG_D1_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "V0tylPzEYrt" + "periodType": "Monthly", + "id": "Yo1BsQNngHy" } } ], - "id": "hR0FkmDKXvh" + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" }, { - "code": "PTT_G3_MW", - "name": "PTT G3 mw", + "code": "PTT_OU_AGG_F_2", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "Monthly", + "id": "b5xszkgbXVd" } - }, + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Monthly", + "id": "CGAbAPpLZTo" } } ], - "id": "hbv3rzk8Fne" + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" }, { - "code": "PTT_G3_ORPHAN", - "name": "PTT G3 orphan", + "code": "PTT_OU_AGG_F_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", - "dataSetElements": [], - "id": "idqEIJ4ahkB" - }, - { - "code": "PTT_G3_PLACE", - "name": "PTT G3 place", - "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { "periodType": "Monthly", - "id": "Zp46A37uZSE" - } - }, - { - "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "id": "dM4sBCBFDDC" } } ], - "id": "Z6EUgky36Mv" + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" } ] } }, { - "name": "indicators", - "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "indicators": [ + "programIndicators": [ { - "code": "PTT_G4_IND_CONSTANT", - "name": "PTT G4 indicator constant", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "id": "CF8eNia3IC2" + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "name": "PTT G4 indicator coverage-averaged", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "BZznfLUT5h4" + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "name": "PTT G4 indicator coverage-averaged-annualized", - "annualized": true, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "LQIWkVZzf5R" + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" }, { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "name": "PTT G4 indicator coverage-summed", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "id": "xA7tYxOjjM3" + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" } ] } }, { - "name": "dataSets", - "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "dataSets": [ + "programs": [ { - "code": "PTT_G5_DS_Daily", - "periodType": "Daily", - "dataSetElements": [ - { - "dataElement": { - "id": "fUFgSP0AtUj" - } - } - ], - "id": "WE8srTzzhBZ" + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" }, { - "code": "PTT_G5_DS_Monthly", - "periodType": "Monthly", - "dataSetElements": [ - { - "dataElement": { - "id": "Nhe8HFuemuw" - } - } - ], - "id": "hFQny4kjg5C" + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" }, { - "code": "PTT_G5_DS_Quarterly", - "periodType": "Quarterly", - "dataSetElements": [ - { - "dataElement": { - "id": "Kd94qfjkpYx" - } - } - ], - "id": "SYkQTXY6EcA" + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" }, { - "code": "PTT_G5_DS_Weekly", - "periodType": "Weekly", - "dataSetElements": [ - { - "dataElement": { - "id": "AFJ5IID9t6Z" - } - } - ], - "id": "S1yLlm7Hk2W" + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" } ] } }, { - "name": "expressionDimensionItems", - "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", "httpStatus": 200, "response": { - "expressionDimensionItems": [ + "organisationUnits": [ { - "code": "PTT_G4_EXPRESSION", - "expression": "#{BeN8IzxwwJF}*2", - "id": "gdmRgPhI76J" + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 } ] } } ] }, - "2.43.3-SNAPSHOT": { - "instance": "dev-2-43", - "date": "2026-10-01", + "2.42.7-SNAPSHOT": { + "instance": "dev-2-42", + "date": "2026-10-02", "requests": [ { "name": "dataElements", @@ -673,14 +1098,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" } }, { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Weekly", + "id": "YlravvdHwIj" } } ], @@ -847,224 +1272,329 @@ } ] } - } - ] - }, - "2.40.12": { - "instance": "stable-2-40-12", - "date": "2026-10-01", - "requests": [ + }, { - "name": "dataElements", - "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", "httpStatus": 200, "response": { "dataElements": [ { - "code": "PTT_G3_HISTORY", - "name": "PTT G3 history", + "code": "PTT_OU_AGG_D1_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "V0tylPzEYrt" + "periodType": "Monthly", + "id": "Yo1BsQNngHy" } } ], - "id": "hR0FkmDKXvh" + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" }, { - "code": "PTT_G3_MW", - "name": "PTT G3 mw", + "code": "PTT_OU_AGG_F_2", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Monthly", + "id": "b5xszkgbXVd" } - }, + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "Monthly", + "id": "CGAbAPpLZTo" } } ], - "id": "hbv3rzk8Fne" + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" }, { - "code": "PTT_G3_ORPHAN", - "name": "PTT G3 orphan", + "code": "PTT_OU_AGG_F_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", - "dataSetElements": [], - "id": "idqEIJ4ahkB" - }, - { - "code": "PTT_G3_PLACE", - "name": "PTT G3 place", - "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { "periodType": "Monthly", - "id": "Zp46A37uZSE" - } - }, - { - "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "id": "dM4sBCBFDDC" } } ], - "id": "Z6EUgky36Mv" + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" } ] } }, { - "name": "indicators", - "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "indicators": [ + "programIndicators": [ { - "code": "PTT_G4_IND_CONSTANT", - "name": "PTT G4 indicator constant", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "id": "CF8eNia3IC2" + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "name": "PTT G4 indicator coverage-averaged", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "BZznfLUT5h4" + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "name": "PTT G4 indicator coverage-averaged-annualized", - "annualized": true, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "LQIWkVZzf5R" + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" }, { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "name": "PTT G4 indicator coverage-summed", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "id": "xA7tYxOjjM3" + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" } ] } }, { - "name": "dataSets", - "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "dataSets": [ + "programs": [ { - "code": "PTT_G5_DS_Daily", - "periodType": "Daily", - "dataSetElements": [ - { - "dataElement": { - "id": "fUFgSP0AtUj" - } - } - ], - "id": "WE8srTzzhBZ" + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" }, { - "code": "PTT_G5_DS_Monthly", - "periodType": "Monthly", - "dataSetElements": [ - { - "dataElement": { - "id": "Nhe8HFuemuw" - } - } - ], - "id": "hFQny4kjg5C" + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" }, { - "code": "PTT_G5_DS_Quarterly", - "periodType": "Quarterly", - "dataSetElements": [ - { - "dataElement": { - "id": "Kd94qfjkpYx" - } - } - ], - "id": "SYkQTXY6EcA" + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" }, { - "code": "PTT_G5_DS_Weekly", - "periodType": "Weekly", - "dataSetElements": [ - { - "dataElement": { - "id": "AFJ5IID9t6Z" - } - } - ], - "id": "S1yLlm7Hk2W" + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" } ] } }, { - "name": "expressionDimensionItems", - "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", "httpStatus": 200, "response": { - "expressionDimensionItems": [ + "organisationUnits": [ { - "code": "PTT_G4_EXPRESSION", - "expression": "#{BeN8IzxwwJF}*2", - "id": "gdmRgPhI76J" + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 } ] } } ] }, - "2.41.10": { - "instance": "stable-2-41-10", - "date": "2026-10-01", + "2.43.3-SNAPSHOT": { + "instance": "dev-2-43", + "date": "2026-10-02", "requests": [ { "name": "dataElements", @@ -1097,14 +1627,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" } }, { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Weekly", + "id": "YlravvdHwIj" } } ], @@ -1128,14 +1658,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "periodType": "Monthly", + "id": "Zp46A37uZSE" } }, { "dataSet": { - "periodType": "Monthly", - "id": "Zp46A37uZSE" + "periodType": "Weekly", + "id": "EBLMCfwOuUT" } } ], @@ -1271,12 +1801,1916 @@ } ] } - } - ] - }, - "2.42.6": { - "instance": "stable-2-42-6", - "date": "2026-10-01", + }, + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.40.12": { + "instance": "stable-2-40-12", + "date": "2026-10-02", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + }, + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.41.10": { + "instance": "stable-2-41-10", + "date": "2026-10-02", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + }, + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + }, + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.42.6": { + "instance": "stable-2-42-6", + "date": "2026-10-02", + "requests": [ + { + "name": "dataElements", + "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_G3_HISTORY", + "name": "PTT G3 history", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "V0tylPzEYrt" + } + } + ], + "id": "hR0FkmDKXvh" + }, + { + "code": "PTT_G3_MW", + "name": "PTT G3 mw", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Weekly", + "id": "YlravvdHwIj" + } + }, + { + "dataSet": { + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" + } + } + ], + "id": "hbv3rzk8Fne" + }, + { + "code": "PTT_G3_ORPHAN", + "name": "PTT G3 orphan", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [], + "id": "idqEIJ4ahkB" + }, + { + "code": "PTT_G3_PLACE", + "name": "PTT G3 place", + "aggregationType": "SUM", + "valueType": "INTEGER", + "domainType": "AGGREGATE", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Zp46A37uZSE" + } + }, + { + "dataSet": { + "periodType": "Weekly", + "id": "EBLMCfwOuUT" + } + } + ], + "id": "Z6EUgky36Mv" + } + ] + } + }, + { + "name": "indicators", + "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "indicators": [ + { + "code": "PTT_G4_IND_CONSTANT", + "name": "PTT G4 indicator constant", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "C{Wi6GdGCugf3}", + "denominator": "1", + "id": "CF8eNia3IC2" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED", + "name": "PTT G4 indicator coverage-averaged", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "BZznfLUT5h4" + }, + { + "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", + "name": "PTT G4 indicator coverage-averaged-annualized", + "annualized": true, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{UB785RAqE9h}", + "id": "LQIWkVZzf5R" + }, + { + "code": "PTT_G4_IND_COVERAGE_SUMMED", + "name": "PTT G4 indicator coverage-summed", + "annualized": false, + "indicatorType": { + "factor": 1, + "id": "c6blltlrGIm" + }, + "numerator": "#{BeN8IzxwwJF}", + "denominator": "#{nxyiifFYsbc}", + "id": "xA7tYxOjjM3" + } + ] + } + }, + { + "name": "dataSets", + "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataSets": [ + { + "code": "PTT_G5_DS_Daily", + "periodType": "Daily", + "dataSetElements": [ + { + "dataElement": { + "id": "fUFgSP0AtUj" + } + } + ], + "id": "WE8srTzzhBZ" + }, + { + "code": "PTT_G5_DS_Monthly", + "periodType": "Monthly", + "dataSetElements": [ + { + "dataElement": { + "id": "Nhe8HFuemuw" + } + } + ], + "id": "hFQny4kjg5C" + }, + { + "code": "PTT_G5_DS_Quarterly", + "periodType": "Quarterly", + "dataSetElements": [ + { + "dataElement": { + "id": "Kd94qfjkpYx" + } + } + ], + "id": "SYkQTXY6EcA" + }, + { + "code": "PTT_G5_DS_Weekly", + "periodType": "Weekly", + "dataSetElements": [ + { + "dataElement": { + "id": "AFJ5IID9t6Z" + } + } + ], + "id": "S1yLlm7Hk2W" + } + ] + } + }, + { + "name": "expressionDimensionItems", + "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "httpStatus": 200, + "response": { + "expressionDimensionItems": [ + { + "code": "PTT_G4_EXPRESSION", + "expression": "#{BeN8IzxwwJF}*2", + "id": "gdmRgPhI76J" + } + ] + } + }, + { + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "dataElements": [ + { + "code": "PTT_OU_AGG_D1_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "Yo1BsQNngHy" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" + }, + { + "code": "PTT_OU_AGG_F_2", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "b5xszkgbXVd" + } + } + ], + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" + }, + { + "code": "PTT_OU_AGG_F_2_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "CGAbAPpLZTo" + } + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ + { + "dataSet": { + "periodType": "Monthly", + "id": "dM4sBCBFDDC" + } + } + ], + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" + } + ] + } + }, + { + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programIndicators": [ + { + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" + }, + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" + }, + { + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" + }, + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" + }, + { + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" + }, + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" + }, + { + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" + }, + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" + } + ] + } + }, + { + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", + "httpStatus": 200, + "response": { + "programs": [ + { + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" + }, + { + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" + }, + { + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" + }, + { + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" + } + ] + } + }, + { + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ] + } + } + ] + }, + "2.43.1": { + "instance": "stable-2-43-1", + "date": "2026-10-02", "requests": [ { "name": "dataElements", @@ -1340,14 +3774,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "periodType": "Monthly", + "id": "Zp46A37uZSE" } }, { "dataSet": { - "periodType": "Monthly", - "id": "Zp46A37uZSE" + "periodType": "Weekly", + "id": "EBLMCfwOuUT" } } ], @@ -1483,215 +3917,320 @@ } ] } - } - ] - }, - "2.43.1": { - "instance": "stable-2-43-1", - "date": "2026-10-01", - "requests": [ + }, { - "name": "dataElements", - "path": "/api/dataElements.json?filter=code:$like:PTT_G3&fields=id,code,name,aggregationType,valueType,domainType,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", + "name": "dataElements-aggregationLevels", + "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", "httpStatus": 200, "response": { "dataElements": [ { - "code": "PTT_G3_HISTORY", - "name": "PTT G3 history", + "code": "PTT_OU_AGG_D1_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "V0tylPzEYrt" + "periodType": "Monthly", + "id": "Yo1BsQNngHy" } } ], - "id": "hR0FkmDKXvh" + "aggregationLevels": [ + 3 + ], + "id": "ZRYrXnbcbjJ" }, { - "code": "PTT_G3_MW", - "name": "PTT G3 mw", + "code": "PTT_OU_AGG_F_2", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" - } - }, - { - "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Monthly", + "id": "b5xszkgbXVd" } } ], - "id": "hbv3rzk8Fne" - }, - { - "code": "PTT_G3_ORPHAN", - "name": "PTT G3 orphan", - "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", - "dataSetElements": [], - "id": "idqEIJ4ahkB" + "aggregationLevels": [ + 2 + ], + "id": "RNhL3JmLlC0" }, { - "code": "PTT_G3_PLACE", - "name": "PTT G3 place", + "code": "PTT_OU_AGG_F_2_3", "aggregationType": "SUM", - "valueType": "INTEGER", - "domainType": "AGGREGATE", "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "EBLMCfwOuUT" + "periodType": "Monthly", + "id": "CGAbAPpLZTo" } - }, + } + ], + "aggregationLevels": [ + 2, + 3 + ], + "id": "WZ6aknVLD9A" + }, + { + "code": "PTT_OU_AGG_F_3", + "aggregationType": "SUM", + "dataSetElements": [ { "dataSet": { "periodType": "Monthly", - "id": "Zp46A37uZSE" + "id": "dM4sBCBFDDC" } } ], - "id": "Z6EUgky36Mv" + "aggregationLevels": [ + 3 + ], + "id": "FPp01mLrknd" } ] } }, { - "name": "indicators", - "path": "/api/indicators.json?filter=code:$like:PTT_G4&fields=id,code,name,numerator,denominator,annualized,indicatorType[id,factor]&paging=false&order=code:asc", + "name": "programIndicators", + "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "indicators": [ + "programIndicators": [ { - "code": "PTT_G4_IND_CONSTANT", - "name": "PTT G4 indicator constant", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "C{Wi6GdGCugf3}", - "denominator": "1", - "id": "CF8eNia3IC2" + "analyticsType": "EVENT", + "id": "TafgHfMvqW7" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED", - "name": "PTT G4 indicator coverage-averaged", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_EVENT_PLACE", + "program": { + "id": "KfzRtyEQHht" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "BZznfLUT5h4" + "orgUnitField": "WJ1j79Dlubx", + "analyticsType": "EVENT", + "id": "eSWGLPCy2ZK" }, { - "code": "PTT_G4_IND_COVERAGE_AVERAGED_ANNUALIZED", - "name": "PTT G4 indicator coverage-averaged-annualized", - "annualized": true, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{UB785RAqE9h}", - "id": "LQIWkVZzf5R" + "analyticsType": "EVENT", + "id": "NTvweRnHeLC" }, { - "code": "PTT_G4_IND_COVERAGE_SUMMED", - "name": "PTT G4 indicator coverage-summed", - "annualized": false, - "indicatorType": { - "factor": 1, - "id": "c6blltlrGIm" + "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", + "program": { + "id": "lAcD9QrX1xQ" }, - "numerator": "#{BeN8IzxwwJF}", - "denominator": "#{nxyiifFYsbc}", - "id": "xA7tYxOjjM3" + "orgUnitField": "ENROLLMENT", + "analyticsType": "EVENT", + "id": "nYG1z4dFVnX" } ] } }, { - "name": "dataSets", - "path": "/api/dataSets.json?filter=code:$like:PTT_G5&fields=id,code,periodType,dataSetElements[dataElement[id]]&paging=false&order=code:asc", + "name": "programs", + "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", "httpStatus": 200, "response": { - "dataSets": [ + "programs": [ { - "code": "PTT_G5_DS_Daily", - "periodType": "Daily", - "dataSetElements": [ - { - "dataElement": { - "id": "fUFgSP0AtUj" - } - } - ], - "id": "WE8srTzzhBZ" + "code": "PTT_PROG_EVENT", + "programType": "WITHOUT_REGISTRATION", + "id": "KfzRtyEQHht" }, { - "code": "PTT_G5_DS_Monthly", - "periodType": "Monthly", - "dataSetElements": [ - { - "dataElement": { - "id": "Nhe8HFuemuw" - } - } - ], - "id": "hFQny4kjg5C" + "code": "PTT_PROG_TRACKER", + "programType": "WITH_REGISTRATION", + "id": "lAcD9QrX1xQ" + } + ] + } + }, + { + "name": "organisationUnitLevels", + "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", + "httpStatus": 200, + "response": { + "organisationUnitLevels": [ + { + "level": 1, + "displayName": "National", + "id": "H1KlN4QIauv" }, { - "code": "PTT_G5_DS_Quarterly", - "periodType": "Quarterly", - "dataSetElements": [ - { - "dataElement": { - "id": "Kd94qfjkpYx" - } - } - ], - "id": "SYkQTXY6EcA" + "level": 2, + "displayName": "District", + "id": "wjP19dkFeIk" }, { - "code": "PTT_G5_DS_Weekly", - "periodType": "Weekly", - "dataSetElements": [ - { - "dataElement": { - "id": "AFJ5IID9t6Z" - } - } - ], - "id": "S1yLlm7Hk2W" + "level": 3, + "displayName": "Chiefdom", + "id": "tTUf91fCytl" + }, + { + "level": 4, + "displayName": "Facility", + "id": "m9lBJogzE95" } ] } }, { - "name": "expressionDimensionItems", - "path": "/api/expressionDimensionItems.json?filter=code:$like:PTT&fields=id,code,expression&paging=false", + "name": "count-level", + "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", "httpStatus": 200, "response": { - "expressionDimensionItems": [ + "organisationUnits": [ { - "code": "PTT_G4_EXPRESSION", - "expression": "#{BeN8IzxwwJF}*2", - "id": "gdmRgPhI76J" + "id": "Rp268JB6Ne4" + } + ] + } + }, + { + "name": "count-path", + "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "count-dataSet", + "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-program", + "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-ids", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "THU3mEbE4b6" + } + ] + } + }, + { + "name": "count-group", + "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "ZBm5vBRXjeH" + } + ] + } + }, + { + "name": "count-grandparent-in-group", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "tsmDjF9bxzK" + } + ] + } + }, + { + "name": "count-grandparent-in-group-none", + "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [] + } + }, + { + "name": "count-child-in-group", + "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "list-assigned-ancestors", + "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", + "httpStatus": 200, + "response": { + "organisationUnits": [ + { + "id": "Zkx2DMsGgi0" + } + ] + } + }, + { + "name": "me", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd", + "id": "ImspTQPwCqd", + "level": 1 + } + ] + } + }, + { + "name": "me-ptt-user", + "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", + "httpStatus": 200, + "response": { + "dataViewOrganisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 + } + ], + "organisationUnits": [ + { + "path": "/ImspTQPwCqd/RIinNUb6rg7", + "id": "RIinNUb6rg7", + "level": 2 } ] } @@ -1699,5 +4238,5 @@ ] } }, - "smoke": "Requests dataElements, indicators, dataSets, expressionDimensionItems; the first 4 objects of each list, and PTT_G3_MW and PTT_G3_ORPHAN in dataElements." + "smoke": "Requests dataElements, indicators, dataSets, expressionDimensionItems, and the org unit requests; the first 4 objects of each list, and PTT_G3_MW and PTT_G3_ORPHAN in dataElements." } diff --git a/src/__fixtures__/period-types/mixed-collection.json b/src/__fixtures__/period-types/mixed-collection.json index bdced8860..8d1689a3f 100644 --- a/src/__fixtures__/period-types/mixed-collection.json +++ b/src/__fixtures__/period-types/mixed-collection.json @@ -7,1733 +7,67 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "smoke": "22 of 105 cases, one per pattern", "cases": [ - { - "id": "mixed-history__q-BiWeekly__r-2024Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2024Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-history__q-BiWeekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 12 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.40.12": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.41.10": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.42.6": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - }, - "2.43.1": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 6 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-history__q-Daily__r-2024Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "Daily", - "period": "2024Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-history__q-Weekly__r-2024Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2024Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-history__q-Weekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 12 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.40.12": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.41.10": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.42.6": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - }, - "2.43.1": { - "status": "VALUE", - "value": 12, - "coarse": 12, - "rows": 12 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-history__q-WeeklyWednesday__r-2024Q2__A", - "item": { - "code": "PTT_G3_HISTORY", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly"], - "notes": "Monthly in 2024, weekly in 2025; only the weekly data set is left.", - "collectionSources": [ - { - "dataSet": "PTT G3 history data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2024Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-mw__q-BiWeekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", - "collectionSources": [ - { - "dataSet": "PTT G3 mw data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - }, - { - "dataSet": "PTT G3 mw data set WeeklyWednesday", - "periodType": "WeeklyWednesday", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 36 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.40.12": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.41.10": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.42.6": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - }, - "2.43.1": { - "status": "VALUE", - "value": 36, - "coarse": 36, - "rows": 7 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-mw__q-Daily__r-2025Q2__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", - "collectionSources": [ - { - "dataSet": "PTT G3 mw data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - }, - { - "dataSet": "PTT G3 mw data set WeeklyWednesday", - "periodType": "WeeklyWednesday", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "Daily", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 36 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 36 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 36 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 36 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 36 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 36 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 36 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 36 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-mw__q-Weekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", - "collectionSources": [ - { - "dataSet": "PTT G3 mw data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - }, - { - "dataSet": "PTT G3 mw data set WeeklyWednesday", - "periodType": "WeeklyWednesday", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "PARTIAL", "value": 12 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.41.11-SNAPSHOT": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.42.7-SNAPSHOT": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.43.3-SNAPSHOT": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.40.12": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.41.10": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.42.6": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - }, - "2.43.1": { - "status": "PARTIAL", - "value": 12, - "coarse": 36, - "rows": 12 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-mw__q-WeeklyWednesday__r-2025Q2__A", - "item": { - "code": "PTT_G3_MW", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Weekly", "WeeklyWednesday"], - "notes": "In a Monday and a Wednesday weekly data set, both used at A and B.", - "collectionSources": [ - { - "dataSet": "PTT G3 mw data set Weekly", - "periodType": "Weekly", - "orgUnits": ["A", "B"] - }, - { - "dataSet": "PTT G3 mw data set WeeklyWednesday", - "periodType": "WeeklyWednesday", - "orgUnits": ["A", "B"] - } - ] - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "PARTIAL", "value": 24 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.41.11-SNAPSHOT": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.42.7-SNAPSHOT": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.43.3-SNAPSHOT": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.40.12": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.41.10": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.42.6": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - }, - "2.43.1": { - "status": "PARTIAL", - "value": 24, - "coarse": 36, - "rows": 12 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-orphan__q-BiWeekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_ORPHAN", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": [], - "notes": "Monthly values, then removed from its only data set.", - "collectionSources": [] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-orphan__q-Monthly__r-2025Q2__A", - "item": { - "code": "PTT_G3_ORPHAN", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": [], - "notes": "Monthly values, then removed from its only data set.", - "collectionSources": [] - }, - "query": { - "periodType": "Monthly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 3 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-BiWeekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-BiWeekly__r-2025Q2__B", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "B", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 120 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.40.12": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.41.10": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.42.6": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - }, - "2.43.1": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 6 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-BiWeekly__r-2025Q2__region", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025Q2", - "orgUnit": "region", - "coarser": "Quarterly" - }, - "expected": { "status": "PARTIAL", "value": 120 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.41.11-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.42.7-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.43.3-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.40.12": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.41.10": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.42.6": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - }, - "2.43.1": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 6 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Daily__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Daily", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Monthly__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Monthly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 3 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 3 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Quarterly__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Quarterly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 3 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.40.12": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.41.10": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.42.6": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - }, - "2.43.1": { - "status": "VALUE", - "value": 3, - "coarse": 3, - "rows": 1 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Weekly__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Weekly__r-2025Q2__B", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2025Q2", - "orgUnit": "B", - "coarser": "Quarterly" - }, - "expected": { "status": "VALUE", "value": 120 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.41.11-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.40.12": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.41.10": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.42.6": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - }, - "2.43.1": { - "status": "VALUE", - "value": 120, - "coarse": 120, - "rows": 12 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-Weekly__r-2025Q2__region", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "Weekly", - "period": "2025Q2", - "orgUnit": "region", - "coarser": "Quarterly" - }, - "expected": { "status": "PARTIAL", "value": 120 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.41.11-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.42.7-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.43.3-SNAPSHOT": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.40.12": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.41.10": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.42.6": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - }, - "2.43.1": { - "status": "PARTIAL", - "value": 120, - "coarse": 123, - "rows": 12 - } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "mixed-place__q-WeeklyWednesday__r-2025Q2__A", - "item": { - "code": "PTT_G3_PLACE", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["Monthly", "Weekly"], - "notes": "Monthly at A, weekly at B.", - "collectionSources": [ - { - "dataSet": "PTT G3 place data set Monthly", - "periodType": "Monthly", - "orgUnits": ["A"] - }, - { - "dataSet": "PTT G3 place data set Weekly", - "periodType": "Weekly", - "orgUnits": ["B"] - } - ] - }, - "query": { - "periodType": "WeeklyWednesday", - "period": "2025Q2", - "orgUnit": "A", - "coarser": "Quarterly" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.41.11-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.42.7-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.43.3-SNAPSHOT": { - "status": "EMPTY", - "value": null, - "coarse": 3 - }, - "2.40.12": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.41.10": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.42.6": { "status": "EMPTY", "value": null, "coarse": 3 }, - "2.43.1": { "status": "EMPTY", "value": null, "coarse": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - } + {"id":"mixed-history__q-BiWeekly__r-2024Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"BiWeekly","period":"2024Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-history__q-BiWeekly__r-2025Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":12},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.40.12":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.41.10":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.42.6":{"status":"VALUE","value":12,"coarse":12,"rows":6},"2.43.1":{"status":"VALUE","value":12,"coarse":12,"rows":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-history__q-Daily__r-2024Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"Daily","period":"2024Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-history__q-Weekly__r-2024Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"Weekly","period":"2024Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-history__q-Weekly__r-2025Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"Weekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":12},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.41.11-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.42.7-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.43.3-SNAPSHOT":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.40.12":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.41.10":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.42.6":{"status":"VALUE","value":12,"coarse":12,"rows":12},"2.43.1":{"status":"VALUE","value":12,"coarse":12,"rows":12}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-history__q-WeeklyWednesday__r-2024Q2__A","item":{"code":"PTT_G3_HISTORY","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly"],"notes":"Monthly in 2024, weekly in 2025; only the weekly data set is left.","collectionSources":[{"dataSet":"PTT G3 history data set Weekly","periodType":"Weekly","orgUnits":["A","B"]}]},"query":{"periodType":"WeeklyWednesday","period":"2024Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-mw__q-BiWeekly__r-2025Q2__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B.","collectionSources":[{"dataSet":"PTT G3 mw data set Weekly","periodType":"Weekly","orgUnits":["A","B"]},{"dataSet":"PTT G3 mw data set WeeklyWednesday","periodType":"WeeklyWednesday","orgUnits":["A","B"]}]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":36},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.40.12":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.41.10":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.42.6":{"status":"VALUE","value":36,"coarse":36,"rows":7},"2.43.1":{"status":"VALUE","value":36,"coarse":36,"rows":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-mw__q-Daily__r-2025Q2__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B.","collectionSources":[{"dataSet":"PTT G3 mw data set Weekly","periodType":"Weekly","orgUnits":["A","B"]},{"dataSet":"PTT G3 mw data set WeeklyWednesday","periodType":"WeeklyWednesday","orgUnits":["A","B"]}]},"query":{"periodType":"Daily","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":36},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":36},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":36},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":36},"2.40.12":{"status":"EMPTY","value":null,"coarse":36},"2.41.10":{"status":"EMPTY","value":null,"coarse":36},"2.42.6":{"status":"EMPTY","value":null,"coarse":36},"2.43.1":{"status":"EMPTY","value":null,"coarse":36}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-mw__q-Weekly__r-2025Q2__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B.","collectionSources":[{"dataSet":"PTT G3 mw data set Weekly","periodType":"Weekly","orgUnits":["A","B"]},{"dataSet":"PTT G3 mw data set WeeklyWednesday","periodType":"WeeklyWednesday","orgUnits":["A","B"]}]},"query":{"periodType":"Weekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"PARTIAL","value":12},"observed":{"2.44-SNAPSHOT":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.41.11-SNAPSHOT":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.42.7-SNAPSHOT":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.43.3-SNAPSHOT":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.40.12":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.41.10":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.42.6":{"status":"PARTIAL","value":12,"coarse":36,"rows":12},"2.43.1":{"status":"PARTIAL","value":12,"coarse":36,"rows":12}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-mw__q-WeeklyWednesday__r-2025Q2__A","item":{"code":"PTT_G3_MW","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Weekly","WeeklyWednesday"],"notes":"In a Monday and a Wednesday weekly data set, both used at A and B.","collectionSources":[{"dataSet":"PTT G3 mw data set Weekly","periodType":"Weekly","orgUnits":["A","B"]},{"dataSet":"PTT G3 mw data set WeeklyWednesday","periodType":"WeeklyWednesday","orgUnits":["A","B"]}]},"query":{"periodType":"WeeklyWednesday","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"PARTIAL","value":24},"observed":{"2.44-SNAPSHOT":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.41.11-SNAPSHOT":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.42.7-SNAPSHOT":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.43.3-SNAPSHOT":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.40.12":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.41.10":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.42.6":{"status":"PARTIAL","value":24,"coarse":36,"rows":12},"2.43.1":{"status":"PARTIAL","value":24,"coarse":36,"rows":12}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-orphan__q-BiWeekly__r-2025Q2__A","item":{"code":"PTT_G3_ORPHAN","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":[],"notes":"Monthly values, then removed from its only data set.","collectionSources":[]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-orphan__q-Monthly__r-2025Q2__A","item":{"code":"PTT_G3_ORPHAN","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":[],"notes":"Monthly values, then removed from its only data set.","collectionSources":[]},"query":{"periodType":"Monthly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.40.12":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.41.10":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.42.6":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.43.1":{"status":"VALUE","value":3,"coarse":3,"rows":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-BiWeekly__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-BiWeekly__r-2025Q2__B","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"B","coarser":"Quarterly"},"expected":{"status":"VALUE","value":120},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.40.12":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.41.10":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.42.6":{"status":"VALUE","value":120,"coarse":120,"rows":6},"2.43.1":{"status":"VALUE","value":120,"coarse":120,"rows":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-BiWeekly__r-2025Q2__region","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"BiWeekly","period":"2025Q2","orgUnit":"region","coarser":"Quarterly"},"expected":{"status":"PARTIAL","value":120},"observed":{"2.44-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.41.11-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.42.7-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.43.3-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.40.12":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.41.10":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.42.6":{"status":"PARTIAL","value":120,"coarse":123,"rows":6},"2.43.1":{"status":"PARTIAL","value":120,"coarse":123,"rows":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Daily__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Daily","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Monthly__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Monthly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.40.12":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.41.10":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.42.6":{"status":"VALUE","value":3,"coarse":3,"rows":3},"2.43.1":{"status":"VALUE","value":3,"coarse":3,"rows":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Quarterly__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Quarterly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.40.12":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.41.10":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.42.6":{"status":"VALUE","value":3,"coarse":3,"rows":1},"2.43.1":{"status":"VALUE","value":3,"coarse":3,"rows":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Weekly__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Weekly","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Weekly__r-2025Q2__B","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Weekly","period":"2025Q2","orgUnit":"B","coarser":"Quarterly"},"expected":{"status":"VALUE","value":120},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.41.11-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.42.7-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.43.3-SNAPSHOT":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.40.12":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.41.10":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.42.6":{"status":"VALUE","value":120,"coarse":120,"rows":12},"2.43.1":{"status":"VALUE","value":120,"coarse":120,"rows":12}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-Weekly__r-2025Q2__region","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"Weekly","period":"2025Q2","orgUnit":"region","coarser":"Quarterly"},"expected":{"status":"PARTIAL","value":120},"observed":{"2.44-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.41.11-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.42.7-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.43.3-SNAPSHOT":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.40.12":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.41.10":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.42.6":{"status":"PARTIAL","value":120,"coarse":123,"rows":12},"2.43.1":{"status":"PARTIAL","value":120,"coarse":123,"rows":12}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"mixed-place__q-WeeklyWednesday__r-2025Q2__A","item":{"code":"PTT_G3_PLACE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly","Weekly"],"notes":"Monthly at A, weekly at B.","collectionSources":[{"dataSet":"PTT G3 place data set Monthly","periodType":"Monthly","orgUnits":["A"]},{"dataSet":"PTT G3 place data set Weekly","periodType":"Weekly","orgUnits":["B"]}]},"query":{"periodType":"WeeklyWednesday","period":"2025Q2","orgUnit":"A","coarser":"Quarterly"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null,"coarse":3},"2.40.12":{"status":"EMPTY","value":null,"coarse":3},"2.41.10":{"status":"EMPTY","value":null,"coarse":3},"2.42.6":{"status":"EMPTY","value":null,"coarse":3},"2.43.1":{"status":"EMPTY","value":null,"coarse":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} ] } diff --git a/src/__fixtures__/period-types/periods-that-dont-nest.json b/src/__fixtures__/period-types/periods-that-dont-nest.json index 382801a0e..d5bd975cf 100644 --- a/src/__fixtures__/period-types/periods-that-dont-nest.json +++ b/src/__fixtures__/period-types/periods-that-dont-nest.json @@ -7,148 +7,194 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "findings": { "2.44-SNAPSHOT": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyFriday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyFriday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyFriday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -158,17 +204,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -210,92 +268,132 @@ }, "2.41.11-SNAPSHOT": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -305,17 +403,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -342,92 +452,132 @@ }, "2.42.7-SNAPSHOT": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -437,17 +587,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -479,107 +641,153 @@ }, "2.43.3-SNAPSHOT": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyFriday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyFriday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyFriday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -589,17 +797,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -641,92 +861,132 @@ }, "2.40.12": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -736,17 +996,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -773,92 +1045,132 @@ }, "2.41.10": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -868,17 +1180,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -905,92 +1229,132 @@ }, "2.42.6": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -1000,17 +1364,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -1042,107 +1418,153 @@ }, "2.43.1": { "Weekly by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "Weekly by Quarterly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 8 }, "Weekly by Yearly": { - "rules": ["end", "mostDays"], + "rules": [ + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyWednesday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyWednesday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyWednesday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyThursday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyThursday by Quarterly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyThursday by Yearly": { - "rules": ["start", "mostDays"], + "rules": [ + "start", + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklyFriday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklyFriday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklyFriday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySaturday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySaturday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySaturday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "WeeklySunday by Monthly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 24 }, "WeeklySunday by Quarterly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 8 }, "WeeklySunday by Yearly": { - "rules": ["mostDays"], + "rules": [ + "mostDays" + ], "empty": 0, "cases": 2 }, "BiWeekly by Monthly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 24 }, "BiWeekly by Quarterly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 8 }, "BiWeekly by Yearly": { - "rules": ["start"], + "rules": [ + "start" + ], "empty": 0, "cases": 2 }, @@ -1152,17 +1574,29 @@ "cases": 8 }, "QuarterlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyApril by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, "SixMonthlyNov by Yearly": { - "rules": ["start", "end", "mostDays"], + "rules": [ + "start", + "end", + "mostDays" + ], "empty": 0, "cases": 2 }, @@ -1205,159 +1639,10 @@ }, "smoke": "5 of 266 cases, one per pattern", "cases": [ - { - "id": "nest-BiWeekly__q-Monthly__p-202401__A", - "item": { - "code": "PTT_G2_BiWeekly", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["BiWeekly"] - }, - "query": { - "periodType": "Monthly", - "period": "202401", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 3 }, - "2.40.12": { "status": "VALUE", "value": 3 }, - "2.41.10": { "status": "VALUE", "value": 3 }, - "2.42.6": { "status": "VALUE", "value": 3 }, - "2.43.1": { "status": "VALUE", "value": 3 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.41.11-SNAPSHOT": "recorded", - "2.42.7-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.40.12": "recorded", - "2.41.10": "recorded", - "2.42.6": "recorded", - "2.43.1": "recorded" - } - }, - { - "id": "nest-FinancialApril__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G2_FinancialApril", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialApril"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.41.11-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.40.12": { "status": "EMPTY", "value": null }, - "2.41.10": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "nest-FinancialAug__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G2_FinancialAug", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialAug"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "nest-FinancialSep__q-Yearly__p-2024__A", - "item": { - "code": "PTT_G2_FinancialSep", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["FinancialSep"] - }, - "query": { - "periodType": "Yearly", - "period": "2024", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.7-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.43.3-SNAPSHOT": { "status": "EMPTY", "value": null }, - "2.42.6": { "status": "EMPTY", "value": null }, - "2.43.1": { "status": "EMPTY", "value": null } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "nest-WeeklyFriday__q-Monthly__p-202401__A", - "item": { - "code": "PTT_G2_WeeklyFriday", - "dimensionItemType": "DATA_ELEMENT", - "aggregationType": "SUM", - "valueType": "INTEGER", - "collectionPeriodTypes": ["WeeklyFriday"] - }, - "query": { - "periodType": "Monthly", - "period": "202401", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 5 }, - "2.43.1": { "status": "VALUE", "value": 5 } - }, - "verdict": { - "2.44-SNAPSHOT": "recorded", - "2.43.3-SNAPSHOT": "recorded", - "2.43.1": "recorded" - } - } + {"id":"nest-BiWeekly__q-Monthly__p-202401__A","item":{"code":"PTT_G2_BiWeekly","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["BiWeekly"]},"query":{"periodType":"Monthly","period":"202401","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.40.12":{"status":"VALUE","value":3},"2.41.10":{"status":"VALUE","value":3},"2.42.6":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"nest-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G2_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"nest-FinancialAug__q-Yearly__p-2024__A","item":{"code":"PTT_G2_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"nest-FinancialSep__q-Yearly__p-2024__A","item":{"code":"PTT_G2_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"nest-WeeklyFriday__q-Monthly__p-202401__A","item":{"code":"PTT_G2_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"Monthly","period":"202401","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}} ] } diff --git a/src/__fixtures__/period-types/reporting-rates.json b/src/__fixtures__/period-types/reporting-rates.json index 69f608541..c858409aa 100644 --- a/src/__fixtures__/period-types/reporting-rates.json +++ b/src/__fixtures__/period-types/reporting-rates.json @@ -7,1230 +7,81 @@ { "instance": "dev", "version": "2.44-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-41", "version": "2.41.11-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-42", "version": "2.42.7-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "dev-2-43", "version": "2.43.3-SNAPSHOT", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-40-12", "version": "2.40.12", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-41-10", "version": "2.41.10", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-42-6", "version": "2.42.6", - "date": "2026-10-01" + "date": "2026-10-02" }, { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-01" + "date": "2026-10-02" } ], "smoke": "36 of 2070 cases, one per pattern", "cases": [ - { - "id": "rate-ACTUAL_REPORTS-Daily__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 59 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.40.12": { "status": "VALUE", "value": 59 }, - "2.41.10": { "status": "VALUE", "value": 59 }, - "2.42.6": { "status": "VALUE", "value": 59 }, - "2.43.1": { "status": "VALUE", "value": 59 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Daily__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Daily__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 213 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 213 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 213 }, - "2.43.1": { "status": "VALUE", "value": 213 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Daily__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 244 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 244 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 244 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 244 }, - "2.42.6": { "status": "VALUE", "value": 244 }, - "2.43.1": { "status": "VALUE", "value": 244 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 92 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 92 }, - "2.42.6": { "status": "VALUE", "value": 92 }, - "2.43.1": { "status": "VALUE", "value": 92 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Quarterly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklySaturday", - "period": "2024SatW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-ACTUAL_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "ACTUAL_REPORTS", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Daily__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 59 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 59 }, - "2.40.12": { "status": "VALUE", "value": 59 }, - "2.41.10": { "status": "VALUE", "value": 59 }, - "2.42.6": { "status": "VALUE", "value": 59 }, - "2.43.1": { "status": "VALUE", "value": 59 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Daily__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 1 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 1 }, - "2.40.12": { "status": "VALUE", "value": 1 }, - "2.41.10": { "status": "VALUE", "value": 1 }, - "2.42.6": { "status": "VALUE", "value": 1 }, - "2.43.1": { "status": "VALUE", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Daily__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 366 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.1": { "status": "VALUE", "value": 366 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Daily__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 366 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 366 }, - "2.42.6": { "status": "VALUE", "value": 366 }, - "2.43.1": { "status": "VALUE", "value": 366 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 92 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 92 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 92 }, - "2.42.6": { "status": "VALUE", "value": 92 }, - "2.43.1": { "status": "VALUE", "value": 92 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Quarterly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklySaturday", - "period": "2024SatW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.40.12": { "status": "REPEATED", "value": 1 }, - "2.41.10": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 1 }, - "2.42.6": { "status": "REPEATED", "value": 1 }, - "2.43.1": { "status": "REPEATED", "value": 1 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-EXPECTED_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "EXPECTED_REPORTS", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Daily__q-BiMonthly__p-202501B__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "BiMonthly", - "period": "202501B", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 100 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.40.12": { "status": "VALUE", "value": 100 }, - "2.41.10": { "status": "VALUE", "value": 100 }, - "2.42.6": { "status": "VALUE", "value": 100 }, - "2.43.1": { "status": "VALUE", "value": 100 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-REPORTING_RATE-Daily__q-Daily__p-20250101__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "Daily", - "period": "20250101", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 100 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.40.12": { "status": "VALUE", "value": 100 }, - "2.41.10": { "status": "VALUE", "value": 100 }, - "2.42.6": { "status": "VALUE", "value": 100 }, - "2.43.1": { "status": "VALUE", "value": 100 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "pass", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-REPORTING_RATE-Daily__q-FinancialAug__p-2023Aug__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialAug", - "period": "2023Aug", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 58.19672131147541 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 58.19672131147541 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 58.19672131147541 - }, - "2.43.1": { "status": "VALUE", "value": 58.19672131147541 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-REPORTING_RATE-Daily__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 66.66666666666666 }, - "observed": { - "2.44-SNAPSHOT": { - "status": "VALUE", - "value": 66.66666666666667 - }, - "2.42.7-SNAPSHOT": { - "status": "VALUE", - "value": 66.66666666666667 - }, - "2.43.3-SNAPSHOT": { - "status": "VALUE", - "value": 66.66666666666667 - }, - "2.42.6": { "status": "VALUE", "value": 66.66666666666667 }, - "2.43.1": { "status": "VALUE", "value": 66.66666666666667 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-REPORTING_RATE-Daily__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Daily", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Daily"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "VALUE", "value": 100 }, - "observed": { - "2.44-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.41.11-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.42.7-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.43.3-SNAPSHOT": { "status": "VALUE", "value": 100 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "VALUE", "value": 100 }, - "2.42.6": { "status": "VALUE", "value": 100 }, - "2.43.1": { "status": "VALUE", "value": 100 } - }, - "verdict": { - "2.44-SNAPSHOT": "pass", - "2.41.11-SNAPSHOT": "pass", - "2.42.7-SNAPSHOT": "pass", - "2.43.3-SNAPSHOT": "pass", - "2.40.12": "fail", - "2.41.10": "pass", - "2.42.6": "pass", - "2.43.1": "pass" - } - }, - { - "id": "rate-REPORTING_RATE-Monthly__q-BiWeekly__p-2025BiW1__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "BiWeekly", - "period": "2025BiW1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Monthly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Monthly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Monthly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Quarterly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Quarterly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Quarterly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Weekly__q-WeeklyFriday__p-2024FriW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklyFriday", - "period": "2024FriW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Weekly__q-WeeklySaturday__p-2024SatW53__A", - "item": { - "code": "PTT_G5_DS_Weekly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Weekly"] - }, - "query": { - "periodType": "WeeklySaturday", - "period": "2024SatW53", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { "status": "REPEATED", "value": 0 }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Yearly__q-FinancialSep__p-2023Sep__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "FinancialSep", - "period": "2023Sep", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - }, - { - "id": "rate-REPORTING_RATE-Yearly__q-QuarterlyNov__p-2025NovQ1__A", - "item": { - "code": "PTT_G5_DS_Yearly", - "dimensionItemType": "REPORTING_RATE", - "metric": "REPORTING_RATE", - "collectionPeriodTypes": ["Yearly"] - }, - "query": { - "periodType": "QuarterlyNov", - "period": "2025NovQ1", - "orgUnit": "A" - }, - "expected": { "status": "EMPTY", "value": null }, - "observed": { - "2.44-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.41.11-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.42.7-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.43.3-SNAPSHOT": { "status": "REPEATED", "value": 0 }, - "2.40.12": { - "status": "ERROR", - "value": null, - "error": "500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate" - }, - "2.41.10": { "status": "REPEATED", "value": 0 }, - "2.42.6": { "status": "REPEATED", "value": 0 }, - "2.43.1": { "status": "REPEATED", "value": 0 } - }, - "verdict": { - "2.44-SNAPSHOT": "fail", - "2.41.11-SNAPSHOT": "fail", - "2.42.7-SNAPSHOT": "fail", - "2.43.3-SNAPSHOT": "fail", - "2.40.12": "fail", - "2.41.10": "fail", - "2.42.6": "fail", - "2.43.1": "fail" - } - } + {"id":"rate-ACTUAL_REPORTS-Daily__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":59},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":59},"2.41.11-SNAPSHOT":{"status":"VALUE","value":59},"2.42.7-SNAPSHOT":{"status":"VALUE","value":59},"2.43.3-SNAPSHOT":{"status":"VALUE","value":59},"2.40.12":{"status":"VALUE","value":59},"2.41.10":{"status":"VALUE","value":59},"2.42.6":{"status":"VALUE","value":59},"2.43.1":{"status":"VALUE","value":59}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Daily__q-Daily__p-20250101__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":213},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":213},"2.43.3-SNAPSHOT":{"status":"VALUE","value":213},"2.43.1":{"status":"VALUE","value":213}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":244},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":244},"2.42.7-SNAPSHOT":{"status":"VALUE","value":244},"2.43.3-SNAPSHOT":{"status":"VALUE","value":244},"2.42.6":{"status":"VALUE","value":244},"2.43.1":{"status":"VALUE","value":244}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":92},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":92},"2.41.11-SNAPSHOT":{"status":"VALUE","value":92},"2.42.7-SNAPSHOT":{"status":"VALUE","value":92},"2.43.3-SNAPSHOT":{"status":"VALUE","value":92},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":92},"2.42.6":{"status":"VALUE","value":92},"2.43.1":{"status":"VALUE","value":92}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Daily__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":59},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":59},"2.41.11-SNAPSHOT":{"status":"VALUE","value":59},"2.42.7-SNAPSHOT":{"status":"VALUE","value":59},"2.43.3-SNAPSHOT":{"status":"VALUE","value":59},"2.40.12":{"status":"VALUE","value":59},"2.41.10":{"status":"VALUE","value":59},"2.42.6":{"status":"VALUE","value":59},"2.43.1":{"status":"VALUE","value":59}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Daily__q-Daily__p-20250101__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.42.7-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.42.6":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":92},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":92},"2.41.11-SNAPSHOT":{"status":"VALUE","value":92},"2.42.7-SNAPSHOT":{"status":"VALUE","value":92},"2.43.3-SNAPSHOT":{"status":"VALUE","value":92},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":92},"2.42.6":{"status":"VALUE","value":92},"2.43.1":{"status":"VALUE","value":92}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Daily__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Daily__q-Daily__p-20250101__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":58.19672131147541},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":58.19672131147541},"2.43.3-SNAPSHOT":{"status":"VALUE","value":58.19672131147541},"2.43.1":{"status":"VALUE","value":58.19672131147541}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":66.66666666666666},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.42.7-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.42.6":{"status":"VALUE","value":66.66666666666667},"2.43.1":{"status":"VALUE","value":66.66666666666667}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-REPORTING_RATE-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}} ] } diff --git a/src/api/dataItemProfile.js b/src/api/dataItemProfile.js deleted file mode 100644 index eb5609f2e..000000000 --- a/src/api/dataItemProfile.js +++ /dev/null @@ -1,300 +0,0 @@ -import { - OPERAND_DATA_ELEMENT, - OPERAND_INDICATOR, - OPERAND_PROGRAM_ATTRIBUTE, - OPERAND_PROGRAM_DATA_ELEMENT, - OPERAND_PROGRAM_INDICATOR, - OPERAND_REPORTING_RATE, - getExpressionItems, -} from '../modules/dataItemProfile/expressionItems.js' -import { DIMENSION_TYPE_REPORTING_RATE } from '../modules/dataItemProfile/getDataItemProfile.js' -import { - DIMENSION_TYPE_DATA_ELEMENT, - DIMENSION_TYPE_DATA_ELEMENT_OPERAND, - DIMENSION_TYPE_EVENT_DATA_ITEM, - DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, - DIMENSION_TYPE_INDICATOR, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, - DIMENSION_TYPE_PROGRAM_INDICATOR, -} from '../modules/dataTypes.js' -import { fetchSourceOrgUnitLevels } from './orgUnitCoverage.js' - -const byIds = (fields) => ({ - params: ({ ids }) => ({ - fields, - filter: `id:in:[${ids.join(',')}]`, - paging: false, - }), -}) - -export const dataItemProfileMetadataQueries = { - dataElements: { - resource: 'dataElements', - ...byIds( - 'id,aggregationType,aggregationLevels,valueType,domainType,dataSetElements[dataSet[id,periodType]]' - ), - }, - indicators: { - resource: 'indicators', - ...byIds('id,numerator,denominator,annualized'), - }, - dataSets: { - resource: 'dataSets', - ...byIds('id,periodType'), - }, - expressionDimensionItems: { - resource: 'expressionDimensionItems', - ...byIds('id,expression'), - }, - programIndicators: { - resource: 'programIndicators', - ...byIds('id,program[id],orgUnitField'), - }, - programs: { - resource: 'programs', - ...byIds('id,programType'), - }, -} - -const RESOURCES = Object.keys(dataItemProfileMetadataQueries) - -// A period type comes as a name, or as an object on some versions -const getPeriodTypeName = (periodType) => - typeof periodType === 'string' ? periodType : periodType?.name - -const getList = (response, resource) => - Array.isArray(response) ? response : response?.[resource] ?? [] - -// By id, or by period type when a version sends no id -const getDataSetKey = ({ id, periodType }) => id ?? periodType - -const uniqueDataSets = (dataSets) => - dataSets.filter( - (dataSet, i) => - dataSets.findIndex( - (other) => getDataSetKey(other) === getDataSetKey(dataSet) - ) === i - ) - -const normalizers = { - dataElements: ({ - aggregationType, - aggregationLevels, - valueType, - domainType, - dataSetElements, - }) => ({ - aggregationType, - ...(aggregationLevels?.length && { aggregationLevels }), - valueType, - domainType, - dataSets: uniqueDataSets( - (dataSetElements ?? []) - .map(({ dataSet }) => dataSet) - .filter((dataSet) => dataSet?.periodType) - .map(({ id, periodType }) => ({ - id, - periodType: getPeriodTypeName(periodType), - })) - ), - }), - indicators: ({ numerator, denominator, annualized }) => ({ - numerator, - denominator, - annualized, - }), - dataSets: ({ periodType }) => ({ - periodType: getPeriodTypeName(periodType), - }), - expressionDimensionItems: ({ expression }) => ({ expression }), - programIndicators: ({ program, orgUnitField }) => ({ - program: program?.id, - ...(orgUnitField && { orgUnitField }), - }), - programs: ({ programType }) => ({ programType }), -} - -/** - * The lookups getDataItemProfile reads, from the responses of - * dataItemProfileMetadataQueries. Accepts a gist response and period types as - * objects. - */ -export const normalizeDataItemProfileMetadata = (responses = {}) => - Object.fromEntries( - RESOURCES.map((resource) => [ - resource, - Object.fromEntries( - getList(responses[resource], resource).map((object) => [ - object.id, - normalizers[resource](object), - ]) - ), - ]) - ) - -const createPending = () => - Object.fromEntries(RESOURCES.map((resource) => [resource, new Set()])) - -// The program of program.element or program.attribute, if the id names one -const addPrefixedProgram = (pending, id) => { - if (id.includes('.')) { - pending.programs.add(id.split('.')[0]) - } -} - -const addItem = (pending, { id, dimensionItemType }) => { - switch (dimensionItemType) { - case DIMENSION_TYPE_DATA_ELEMENT: - case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: - pending.dataElements.add(id.split('.')[0]) - break - case DIMENSION_TYPE_REPORTING_RATE: - pending.dataSets.add(id.split('.')[0]) - break - case DIMENSION_TYPE_INDICATOR: - pending.indicators.add(id) - break - case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: - pending.expressionDimensionItems.add(id) - break - case DIMENSION_TYPE_PROGRAM_INDICATOR: - pending.programIndicators.add(id) - break - case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: - case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION: - case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: - case DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION: - case DIMENSION_TYPE_EVENT_DATA_ITEM: - addPrefixedProgram(pending, id) - break - default: - // Other items need no metadata - } -} - -const OPERAND_RESOURCE = { - [OPERAND_DATA_ELEMENT]: 'dataElements', - [OPERAND_REPORTING_RATE]: 'dataSets', - [OPERAND_INDICATOR]: 'indicators', - [OPERAND_PROGRAM_INDICATOR]: 'programIndicators', -} - -const PROGRAM_PREFIXED_OPERANDS = [ - OPERAND_PROGRAM_DATA_ELEMENT, - OPERAND_PROGRAM_ATTRIBUTE, -] - -const addOperands = (pending, expression) => - getExpressionItems(expression).forEach(({ type, id }) => { - const resource = OPERAND_RESOURCE[type] - - if (resource) { - pending[resource].add(id) - } else if (PROGRAM_PREFIXED_OPERANDS.includes(type)) { - addPrefixedProgram(pending, id) - } - }) - -const mergeMetadata = (metadata, fetched) => - Object.fromEntries( - RESOURCES.map((resource) => [ - resource, - { ...metadata[resource], ...fetched[resource] }, - ]) - ) - -// Indicators can nest (N{}), so operands are fetched round by round -const MAX_ROUNDS = 10 - -// The data sets behind the metadata: of its data elements, and read as reporting rates -// The data sets and programs behind the metadata, as sources to count -const getSources = (metadata) => [ - ...[ - ...new Set([ - ...Object.values(metadata.dataElements).flatMap(({ dataSets }) => - dataSets.map(({ id }) => id).filter(Boolean) - ), - ...Object.keys(metadata.dataSets), - ]), - ].map((id) => ({ id, field: 'dataSets' })), - ...Object.keys(metadata.programs).map((id) => ({ id, field: 'programs' })), -] - -/** - * Fetches the metadata getDataItemProfile needs for `items` - * ({ id, dimensionItemType }): data elements, data sets, indicators and their - * operands, nested indicators, expression dimension items, program - * indicators and programs. By default it - * also counts each data set's assigned units per level - * (fetchSourceOrgUnitLevels: one count per data set or program and level), for the - * profile's org unit side; `{ orgUnitLevels: false }` leaves them out. - */ -export const fetchDataItemProfileMetadata = async ( - dataEngine, - items = [], - { orgUnitLevels = true } = {} -) => { - let metadata = normalizeDataItemProfileMetadata() - const requested = createPending() - let pending = createPending() - - items.forEach((item) => addItem(pending, item)) - - for (let round = 0; round < MAX_ROUNDS; round++) { - const toFetch = RESOURCES.map((resource) => [ - resource, - [...pending[resource]].filter((id) => !requested[resource].has(id)), - ]).filter(([, ids]) => ids.length) - - if (!toFetch.length) { - break - } - - const responses = await Promise.all( - toFetch.map(([resource, ids]) => { - ids.forEach((id) => requested[resource].add(id)) - - return dataEngine.query( - { [resource]: dataItemProfileMetadataQueries[resource] }, - { variables: { ids } } - ) - }) - ) - const fetched = normalizeDataItemProfileMetadata( - Object.assign({}, ...responses) - ) - - metadata = mergeMetadata(metadata, fetched) - pending = createPending() - Object.values(fetched.indicators).forEach( - ({ numerator, denominator }) => { - addOperands(pending, numerator) - addOperands(pending, denominator) - } - ) - Object.values(fetched.expressionDimensionItems).forEach( - ({ expression }) => addOperands(pending, expression) - ) - Object.values(fetched.programIndicators).forEach( - ({ program }) => program && pending.programs.add(program) - ) - } - - if (!orgUnitLevels) { - return metadata - } - - const { levels, assignedLevels } = await fetchSourceOrgUnitLevels( - dataEngine, - getSources(metadata) - ) - - return { - ...metadata, - orgUnitLevels: levels, - dataSetOrgUnitLevels: assignedLevels, - } -} diff --git a/src/api/__tests__/dataItemProfile.spec.js b/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js similarity index 80% rename from src/api/__tests__/dataItemProfile.spec.js rename to src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js index f97992795..c7cd654c4 100644 --- a/src/api/__tests__/dataItemProfile.spec.js +++ b/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js @@ -1,10 +1,10 @@ -import metadataShapes from '../../__fixtures__/period-types/metadata-shapes.json' -import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' +import metadataShapes from '../../../__fixtures__/period-types/metadata-shapes.json' +import { getDataItemProfile } from '../../../modules/dataItemProfile/getDataItemProfile.js' +import { fetchDataItemProfileMetadata } from '../fetchDataItemProfileMetadata.js' import { dataItemProfileMetadataQueries, - fetchDataItemProfileMetadata, normalizeDataItemProfileMetadata, -} from '../dataItemProfile.js' +} from '../metadataQueries.js' // The metadata responses the test tool recorded on every version const getResponses = ({ requests }) => @@ -34,7 +34,9 @@ const splitFields = (fields) => { /* Fields the test tool's export doesn't record yet: their shape on each * version is unchecked until it does */ -const NOT_RECORDED = ['aggregationLevels'] +/* Fields the test tool's requests named after a resource don't ask for: + * aggregationLevels has a request of its own (dataElements-aggregationLevels) */ +const NOT_RECORDED = ['aggregationLevels', 'analyticsPeriodBoundaries[id]'] describe('normalizeDataItemProfileMetadata', () => { describe.each(Object.entries(metadataShapes.versions))( @@ -88,20 +90,40 @@ describe('normalizeDataItemProfileMetadata', () => { }) it('were recorded with every field the library asks for', () => { - shapes.requests.forEach((request) => { - const recorded = splitFields(getRecordedFields(request)) - const asked = splitFields( - dataItemProfileMetadataQueries[request.name].params({ - ids: [], - }).fields - ).filter((field) => !NOT_RECORDED.includes(field)) - - expect(recorded).toEqual(expect.arrayContaining(asked)) - }) + shapes.requests + .filter(({ name }) => dataItemProfileMetadataQueries[name]) + .forEach((request) => { + const recorded = splitFields(getRecordedFields(request)) + const asked = splitFields( + dataItemProfileMetadataQueries[request.name].params( + { + ids: [], + } + ).fields + ).filter((field) => !NOT_RECORDED.includes(field)) + + expect(recorded).toEqual(expect.arrayContaining(asked)) + }) }) } ) + it('tells whether a program indicator has period boundaries', () => { + const { programIndicators } = normalizeDataItemProfileMetadata({ + programIndicators: [ + { id: 'bounded', analyticsPeriodBoundaries: [{ id: 'start' }] }, + { id: 'unbounded', analyticsPeriodBoundaries: [] }, + { id: 'notAsked' }, + ], + }) + + expect(programIndicators.bounded.hasPeriodBoundaries).toBe(true) + expect(programIndicators.unbounded.hasPeriodBoundaries).toBe(false) + expect(programIndicators.notAsked).not.toHaveProperty( + 'hasPeriodBoundaries' + ) + }) + it('keeps the aggregation levels of a data element that has some', () => { const { dataElements } = normalizeDataItemProfileMetadata({ dataElements: [ @@ -217,7 +239,9 @@ describe('fetchDataItemProfileMetadata', () => { // Without the org unit level counts, which have their own test const fetchMetadata = (engine, items) => - fetchDataItemProfileMetadata(engine, items, { orgUnitLevels: false }) + fetchDataItemProfileMetadata(engine, items, { + withAssignedOrgUnitCounts: false, + }) const requestsOf = (engine) => engine.query.mock.calls.map(([query, { variables }]) => [ @@ -250,10 +274,10 @@ describe('fetchDataItemProfileMetadata', () => { ) ).toMatchObject({ unknown: false, - period: { + assignedPeriodTypes: { types: ['Weekly', 'Monthly', 'Yearly'], - finest: 'Yearly', - mixed: true, + shortestDirectType: 'Yearly', + hasSeveral: true, }, }) }) @@ -294,7 +318,7 @@ describe('fetchDataItemProfileMetadata', () => { expect(engine.query).not.toHaveBeenCalled() }) - it('stops after 10 rounds of nested indicators', async () => { + it('follows nested indicators until nothing new is referred to', async () => { const chain = Object.fromEntries( Array.from({ length: 20 }, (_, i) => [ `i${i}`, @@ -307,7 +331,27 @@ describe('fetchDataItemProfileMetadata', () => { { id: 'i0', dimensionItemType: 'INDICATOR' }, ]) - expect(engine.query).toHaveBeenCalledTimes(10) + // i0 to i19, then i20, which isn't on the server + expect(engine.query).toHaveBeenCalledTimes(21) + }) + + it('fetches indicators that refer to each other once', async () => { + const engine = createEngine({ + ...server, + indicators: { + loopA: { numerator: 'N{loopB}', denominator: '1' }, + loopB: { numerator: 'N{loopA}', denominator: '1' }, + }, + }) + + await fetchMetadata(engine, [ + { id: 'loopA', dimensionItemType: 'INDICATOR' }, + ]) + + expect(requestsOf(engine)).toEqual([ + ['indicators', ['loopA']], + ['indicators', ['loopB']], + ]) }) it('fails when a request fails', async () => { @@ -364,7 +408,7 @@ describe('fetchDataItemProfileMetadata', () => { ]) expect(metadata.orgUnitLevels.map(({ level }) => level)).toEqual([1, 2]) - expect(metadata.dataSetOrgUnitLevels).toMatchObject({ dsA: { 2: 5 } }) + expect(metadata.assignedOrgUnitCounts).toMatchObject({ dsA: { 2: 5 } }) expect( getDataItemProfile( { @@ -372,7 +416,7 @@ describe('fetchDataItemProfileMetadata', () => { dimensionItemType: 'REPORTING_RATE', }, metadata - ).orgUnit - ).toEqual({ levels: [2], entryLevel: 2, mixed: false }) + ).assignedOrgUnitLevels + ).toEqual({ levels: [2], deepestLevel: 2, hasSeveral: false }) }) }) diff --git a/src/api/__tests__/orgUnitCoverage.spec.js b/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js similarity index 66% rename from src/api/__tests__/orgUnitCoverage.spec.js rename to src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js index 77cc76dde..178081fbd 100644 --- a/src/api/__tests__/orgUnitCoverage.spec.js +++ b/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js @@ -1,8 +1,9 @@ +import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' import { - fetchSourceOrgUnitLevels, - fetchOrgUnitCoverage, - getProfilesSources, -} from '../orgUnitCoverage.js' + fetchAssignedOrgUnitCounts, + getCountableSources, +} from '../assignedOrgUnitCounts.js' +import { fetchOrgUnitCoverage } from '../fetchOrgUnitCoverage.js' /* A nation with 2 districts and 3 facilities. formMonth: 2 of the 3 * facilities, and the nation. formQuart: the districts. eventProgra: the 3 @@ -28,84 +29,15 @@ const UNITS = [ programs: level === 3 ? ['eventProgra'] : [], })) -const parentOf = ({ path }) => - UNITS.find(({ id }) => id === path.split('/').at(-2)) -const childrenOf = (unit) => UNITS.filter((other) => parentOf(other) === unit) - -// organisationUnitGroups.id, behind parent. and children. steps -const isInGroup = (unit, field, group) => { - const steps = field.split('.').slice(0, -2) - const related = steps.reduce( - (units, step) => - units.flatMap((one) => - step === 'parent' - ? [parentOf(one)].filter(Boolean) - : childrenOf(one) - ), - [unit] - ) - - return related.some(({ id }) => GROUPS[group].includes(id)) -} - -const FILTERS = { - in: (unit, field, value) => - value.slice(1, -1).split(',').includes(unit[field]), - eq: (unit, field, value) => - field.endsWith('organisationUnitGroups.id') - ? isInGroup(unit, field, value) - : ['dataSets.id', 'programs.id'].includes(field) - ? unit[field.split('.')[0]].includes(value) - : String(unit[field]) === value, - like: (unit, field, value) => unit[field].includes(value), -} - -const applyFilters = (filter) => - [filter].flat().reduce((units, condition) => { - const [field, operator, ...rest] = condition.split(':') - - return units.filter((unit) => - FILTERS[operator](unit, field, rest.join(':')) - ) - }, UNITS) - -const answer = ({ resource, params }) => { - if (resource === 'organisationUnitLevels') { - return { - organisationUnitLevels: [3, 1, 2].map((level) => ({ - id: `level${level}`, - level, - displayName: `Level ${level}`, - })), - } - } - - if (resource === 'me') { - return { - organisationUnits: [UNITS[0]], - dataViewOrganisationUnits: [UNITS[1]], - } - } - - const units = applyFilters(params.filter) - - return params.pageSize === 1 - ? { - pager: { total: units.length }, - organisationUnits: units.slice(0, 1), - } - : { organisationUnits: units } -} - -const createEngine = () => ({ - query: jest.fn(async (query) => - Object.fromEntries( - Object.entries(query).map(([key, request]) => [ - key, - answer(request), - ]) - ) - ), +const { createEngine } = createFakeOrgUnitServer({ + orgUnits: UNITS, + groups: GROUPS, + user: { + organisationUnits: ['nationUnit1'], + dataViewOrganisationUnits: ['districtAAA'], + }, + // Out of order, as a server may list them + levels: [3, 1, 2], }) const dataSets = (...ids) => ids.map((id) => ({ id, field: 'dataSets' })) @@ -118,13 +50,13 @@ describe('fetchOrgUnitCoverage', () => { const coverage = await fetchFor(['districtAAA']) expect(coverage.levels.map(({ level }) => level)).toEqual([1, 2, 3]) - expect(coverage.units.districtAAA).toEqual({ + expect(coverage.orgUnits.districtAAA).toEqual({ id: 'districtAAA', level: 2, path: '/nationUnit1/districtAAA', name: undefined, }) - expect(coverage.assignedLevels).toEqual({ + expect(coverage.assignedOrgUnitCounts).toEqual({ formMonth: { 1: 1, 3: 2 }, formQuart: { 2: 2 }, }) @@ -135,7 +67,7 @@ describe('fetchOrgUnitCoverage', () => { formQuart: { byLevel: { 2: 1 }, ancestors: 0 }, }, }) - expect(coverage).toMatchObject({ roots: [], userUnits: null }) + expect(coverage).toMatchObject({ rootIds: [], userOrgUnitIds: null }) }) it('counts only the levels a data set is assigned at', async () => { @@ -153,24 +85,24 @@ describe('fetchOrgUnitCoverage', () => { const coverage = await fetchOrgUnitCoverage(engine, { sources: dataSets('formQuart'), orgUnits: ['nationUnit1'], - assignedLevels: { formQuart: { 2: 2 } }, + assignedOrgUnitCounts: { formQuart: { 2: 2 } }, }) - expect(coverage.assignedLevels).toEqual({ formQuart: { 2: 2 } }) + expect(coverage.assignedOrgUnitCounts).toEqual({ formQuart: { 2: 2 } }) expect(coverage.requests).toBe(2) }) it('loads the roots for a level alone', async () => { const coverage = await fetchFor(['LEVEL-3']) - expect(coverage.roots).toEqual(['nationUnit1']) + expect(coverage.rootIds).toEqual(['nationUnit1']) expect(coverage.counts.nationUnit1.totals).toEqual({ 1: 1, 2: 2, 3: 3 }) }) it('loads the user units, from the data view ones first', async () => { const coverage = await fetchFor(['USER_ORGUNIT_CHILDREN']) - expect(coverage.userUnits).toEqual(['districtAAA']) + expect(coverage.userOrgUnitIds).toEqual(['districtAAA']) }) it('falls back to the user data capture units', async () => { @@ -190,7 +122,7 @@ describe('fetchOrgUnitCoverage', () => { orgUnits: ['USER_ORGUNIT'], }) - expect(coverage.userUnits).toEqual(['nationUnit1']) + expect(coverage.userOrgUnitIds).toEqual(['nationUnit1']) expect(coverage.counts).toEqual({}) }) @@ -198,7 +130,7 @@ describe('fetchOrgUnitCoverage', () => { const coverage = await fetchFor(['OU_GROUP-mixedGroupA']) expect(coverage.groups).toEqual({ mixedGroupA: { 2: 1, 3: 1 } }) - expect(coverage.roots).toEqual([]) + expect(coverage.rootIds).toEqual([]) expect(coverage.counts).toEqual({ 'mixedGroupA:2:': { totals: { 2: 1, 3: 1 }, @@ -235,17 +167,17 @@ describe('fetchOrgUnitCoverage', () => { it('sends no count without units or data sets', async () => { expect(await fetchOrgUnitCoverage(createEngine(), {})).toMatchObject({ - units: {}, + orgUnits: {}, counts: {}, requests: 0, }) }) }) -describe('getProfilesSources', () => { +describe('getCountableSources', () => { it('lists the data sets and programs behind profiles, once each', () => { expect( - getProfilesSources([ + getCountableSources([ { sources: [ { dataSet: { id: 'formA' } }, @@ -265,13 +197,13 @@ describe('getProfilesSources', () => { { id: 'formA', field: 'dataSets' }, { id: 'programA', field: 'programs' }, ]) - expect(getProfilesSources()).toEqual([]) + expect(getCountableSources()).toEqual([]) }) }) -describe('fetchSourceOrgUnitLevels', () => { +describe('fetchAssignedOrgUnitCounts', () => { it('fetches the levels, then counts each source per level', async () => { - const result = await fetchSourceOrgUnitLevels(createEngine(), [ + const result = await fetchAssignedOrgUnitCounts(createEngine(), [ ...dataSets('formMonth', 'formNone'), { id: 'eventProgra', field: 'programs' }, ]) @@ -282,7 +214,7 @@ describe('fetchSourceOrgUnitLevels', () => { { id: 'level2', level: 2, name: 'Level 2' }, { id: 'level3', level: 3, name: 'Level 3' }, ], - assignedLevels: { + assignedOrgUnitCounts: { formMonth: { 1: 1, 3: 2 }, formNone: {}, eventProgra: { 3: 3 }, diff --git a/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js b/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js new file mode 100644 index 000000000..f4a23d7ce --- /dev/null +++ b/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js @@ -0,0 +1,97 @@ +import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' +import { + fetchGroupMembersByLevel, + getGroupCountQueries, +} from '../orgUnitGroupCounts.js' + +/* A nation (1) with a district (2) holding two facilities (3). The group's + * members: the district and one facility. formMonth: the facilities. */ +const ORG_UNITS = [ + ['nationUnit1', 1, '/nationUnit1', []], + ['districtAAA', 2, '/nationUnit1/districtAAA', []], + ['facilityAAA', 3, '/nationUnit1/districtAAA/facilityAAA', ['formMonth']], + ['facilityBBB', 3, '/nationUnit1/districtAAA/facilityBBB', ['formMonth']], +].map(([id, level, path, dataSets]) => ({ + id, + level, + path, + dataSets, + programs: [], +})) +const GROUPS = { groupAAAAAA: ['districtAAA', 'facilityAAA'], emptyGroupA: [] } +const LEVELS = [1, 2, 3].map((level) => ({ id: `level${level}`, level })) +const FORM_MONTH = { id: 'formMonth', field: 'dataSets' } + +const filtersOf = (queries) => + Object.fromEntries( + queries.map(([key, query]) => [key.join('|'), query.params.filter]) + ) + +describe('fetchGroupMembersByLevel', () => { + it('counts each group’s members per level, leaving out empty levels', async () => { + const { createEngine } = createFakeOrgUnitServer({ + orgUnits: ORG_UNITS, + groups: GROUPS, + }) + + expect( + await fetchGroupMembersByLevel( + createEngine(), + ['groupAAAAAA', 'emptyGroupA'], + LEVELS + ) + ).toEqual({ + groups: { groupAAAAAA: { 2: 1, 3: 1 }, emptyGroupA: {} }, + requests: 6, + }) + }) +}) + +describe('getGroupCountQueries', () => { + const queriesFor = (parentOrgUnitIds = []) => + getGroupCountQueries({ + groups: { groupAAAAAA: { 2: 1 } }, + parentOrgUnitIds, + orgUnits: Object.fromEntries( + ORG_UNITS.map((unit) => [unit.id, unit]) + ), + sources: [FORM_MONTH], + assignedOrgUnitCounts: { formMonth: { 1: 1, 3: 2 } }, + }) + + it('counts org units below the members, and the sources above them', () => { + expect(filtersOf(queriesFor())).toEqual({ + 'groupAAAAAA:2:|total|2': [ + 'organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:2', + ], + 'groupAAAAAA:2:|total|3': [ + 'parent.organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:3', + ], + 'groupAAAAAA:2:|formMonth|ancestors': [ + 'children.organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:1', + 'dataSets.id:eq:formMonth', + ], + 'groupAAAAAA:2:|formMonth|3': [ + 'parent.organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:3', + 'dataSets.id:eq:formMonth', + ], + }) + }) + + it('keeps the members under each parent at or above them', () => { + const filters = filtersOf(queriesFor(['nationUnit1', 'facilityAAA'])) + + expect(filters['groupAAAAAA:2:nationUnit1|total|2']).toEqual([ + 'path:like:nationUnit1', + 'organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:2', + ]) + expect( + Object.keys(filters).some((key) => key.includes('facilityAAA')) + ).toBe(false) + }) +}) diff --git a/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js b/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js new file mode 100644 index 000000000..1ef2066c9 --- /dev/null +++ b/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js @@ -0,0 +1,60 @@ +import { + assignedTo, + countQuery, + getTotal, + inGroup, + queryAll, + readLevels, +} from '../orgUnitQueries.js' + +describe('orgUnitQueries', () => { + it('counts with one org unit per page', () => { + expect(countQuery(['level:eq:2'])).toEqual({ + resource: 'organisationUnits', + params: { filter: ['level:eq:2'], fields: 'id', pageSize: 1 }, + }) + }) + + it('reads the total from the pager', () => { + expect(getTotal({ pager: { total: 1166 } })).toBe(1166) + expect(getTotal({ organisationUnits: [] })).toBe(0) + expect(getTotal(undefined)).toBe(0) + }) + + it('filters by assignment and by group', () => { + expect(assignedTo({ id: 'formAAAAAAA', field: 'dataSets' })).toBe( + 'dataSets.id:eq:formAAAAAAA' + ) + expect(inGroup('groupAAAAAA')).toBe( + 'organisationUnitGroups.id:eq:groupAAAAAA' + ) + }) + + it('sends every query in one request, keyed by position', async () => { + const engine = { query: jest.fn(async () => ({ count0: 1 })) } + + expect(await queryAll(engine, [['a', countQuery([])]])).toEqual({ + count0: 1, + }) + expect(engine.query).toHaveBeenCalledWith({ count0: countQuery([]) }) + expect(await queryAll(engine, [])).toEqual({}) + expect(engine.query).toHaveBeenCalledTimes(1) + }) + + it('sorts the levels', () => { + expect( + readLevels({ + levels: { + organisationUnitLevels: [ + { id: 'levelTwo', level: 2, displayName: 'District' }, + { id: 'levelOne', level: 1, displayName: 'National' }, + ], + }, + }) + ).toEqual([ + { id: 'levelOne', level: 1, name: 'National' }, + { id: 'levelTwo', level: 2, name: 'District' }, + ]) + expect(readLevels(undefined)).toEqual([]) + }) +}) diff --git a/src/api/dataItemProfile/assignedOrgUnitCounts.js b/src/api/dataItemProfile/assignedOrgUnitCounts.js new file mode 100644 index 000000000..4f8a37cf5 --- /dev/null +++ b/src/api/dataItemProfile/assignedOrgUnitCounts.js @@ -0,0 +1,68 @@ +import { + canBeAtAnyOrgUnit, + getAssignmentField, + getSourceId, +} from '../../modules/dataItemProfile/sources.js' +import { + assignedTo, + countQuery, + getTotal, + levelsQuery, + queryAll, + readLevels, +} from './orgUnitQueries.js' + +/** + * The data sets and programs behind profiles (getDataItemProfile results) + * whose assignment can be counted: `[{ id, field }]`, `field` being the org + * unit field that lists them (dataSets or programs). Program indicators + * whose values can be at any org unit are left out. + */ +export const getCountableSources = (profiles = []) => [ + ...new Map( + profiles + .flatMap((profile) => profile?.sources ?? []) + .filter( + (source) => getSourceId(source) && !canBeAtAnyOrgUnit(source) + ) + .map((source) => [ + getSourceId(source), + { id: getSourceId(source), field: getAssignmentField(source) }, + ]) + ).values(), +] + +/** + * The number of org units each data set or program (`sources`, from + * getCountableSources) is assigned to, per level, across the hierarchy: one + * count per source and level. `levels` are fetched when not given. Gives + * `{ levels, assignedOrgUnitCounts: { [sourceId]: { [level]: count } }, + * requests }`. + */ +export const fetchAssignedOrgUnitCounts = async (engine, sources, levels) => { + const knownLevels = levels ?? readLevels(await engine.query(levelsQuery)) + const queries = sources.flatMap((source) => + knownLevels.map(({ level }) => [ + [source.id, level], + countQuery([`level:eq:${level}`, assignedTo(source)]), + ]) + ) + const response = await queryAll(engine, queries) + const assignedOrgUnitCounts = Object.fromEntries( + sources.map(({ id }) => [id, {}]) + ) + + queries.forEach(([[sourceId, level]], i) => { + const total = getTotal(response[`count${i}`]) + + if (total) { + assignedOrgUnitCounts[sourceId][level] = total + } + }) + + return { + levels: knownLevels, + assignedOrgUnitCounts, + requests: queries.length, + } +} diff --git a/src/api/dataItemProfile/fetchDataItemProfileMetadata.js b/src/api/dataItemProfile/fetchDataItemProfileMetadata.js new file mode 100644 index 000000000..7fb464ede --- /dev/null +++ b/src/api/dataItemProfile/fetchDataItemProfileMetadata.js @@ -0,0 +1,194 @@ +import { DIMENSION_TYPE_REPORTING_RATE } from '../../modules/dataItemProfile/constants.js' +import { parseExpressionOperands } from '../../modules/dataItemProfile/expressionOperands.js' +import { + DIMENSION_TYPE_DATA_ELEMENT, + DIMENSION_TYPE_DATA_ELEMENT_OPERAND, + DIMENSION_TYPE_EVENT_DATA_ITEM, + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, + DIMENSION_TYPE_INDICATOR, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, + DIMENSION_TYPE_PROGRAM_INDICATOR, +} from '../../modules/dataTypes.js' +import { fetchAssignedOrgUnitCounts } from './assignedOrgUnitCounts.js' +import { + dataItemProfileMetadataQueries, + METADATA_RESOURCES, + normalizeDataItemProfileMetadata, +} from './metadataQueries.js' + +const createPending = () => + Object.fromEntries( + METADATA_RESOURCES.map((resource) => [resource, new Set()]) + ) + +// The program of program.element or program.attribute, if the id names one +const addProgramOfItem = (pending, id) => { + if (id.includes('.')) { + pending.programs.add(id.split('.')[0]) + } +} + +const addItem = (pending, { id, dimensionItemType }) => { + switch (dimensionItemType) { + case DIMENSION_TYPE_DATA_ELEMENT: + case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: + pending.dataElements.add(id.split('.')[0]) + break + case DIMENSION_TYPE_REPORTING_RATE: + pending.dataSets.add(id.split('.')[0]) + break + case DIMENSION_TYPE_INDICATOR: + pending.indicators.add(id) + break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + pending.expressionDimensionItems.add(id) + break + case DIMENSION_TYPE_PROGRAM_INDICATOR: + pending.programIndicators.add(id) + break + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION: + case DIMENSION_TYPE_EVENT_DATA_ITEM: + addProgramOfItem(pending, id) + break + default: + // Other items need no metadata + } +} + +const RESOURCE_BY_OPERAND_TYPE = { + [DIMENSION_TYPE_DATA_ELEMENT]: 'dataElements', + [DIMENSION_TYPE_REPORTING_RATE]: 'dataSets', + [DIMENSION_TYPE_INDICATOR]: 'indicators', + [DIMENSION_TYPE_PROGRAM_INDICATOR]: 'programIndicators', +} + +const PROGRAM_ITEM_OPERAND_TYPES = new Set([ + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, +]) + +const addOperands = (pending, expression) => + parseExpressionOperands(expression).forEach(({ type, id }) => { + const resource = RESOURCE_BY_OPERAND_TYPE[type] + + if (resource) { + pending[resource].add(id) + } else if (PROGRAM_ITEM_OPERAND_TYPES.has(type)) { + addProgramOfItem(pending, id) + } + }) + +// What the fetched objects refer to: operands of expressions, programs of program indicators +const getReferences = (fetched) => { + const pending = createPending() + + Object.values(fetched.indicators).forEach(({ numerator, denominator }) => { + addOperands(pending, numerator) + addOperands(pending, denominator) + }) + Object.values(fetched.expressionDimensionItems).forEach(({ expression }) => + addOperands(pending, expression) + ) + Object.values(fetched.programIndicators).forEach( + ({ program }) => program && pending.programs.add(program) + ) + + return pending +} + +const mergeMetadata = (metadata, fetched) => + Object.fromEntries( + METADATA_RESOURCES.map((resource) => [ + resource, + { ...metadata[resource], ...fetched[resource] }, + ]) + ) + +/* One round: fetch what is pending and not fetched yet, then what it refers + * to (indicators nest through N{}). Each id is fetched once, so the rounds + * end when nothing new is referred to. */ +const fetchRound = async (dataEngine, { metadata, pending, requested }) => { + const toFetch = METADATA_RESOURCES.map((resource) => [ + resource, + [...pending[resource]].filter((id) => !requested[resource].has(id)), + ]).filter(([, ids]) => ids.length) + + if (!toFetch.length) { + return metadata + } + + const responses = await Promise.all( + toFetch.map(([resource, ids]) => { + ids.forEach((id) => requested[resource].add(id)) + + return dataEngine.query( + { [resource]: dataItemProfileMetadataQueries[resource] }, + { variables: { ids } } + ) + }) + ) + const fetched = normalizeDataItemProfileMetadata( + Object.assign({}, ...responses) + ) + + return fetchRound(dataEngine, { + metadata: mergeMetadata(metadata, fetched), + pending: getReferences(fetched), + requested, + }) +} + +// The data sets and programs behind the metadata, as sources to count +const getSources = (metadata) => [ + ...[ + ...new Set([ + ...Object.values(metadata.dataElements).flatMap(({ dataSets }) => + dataSets.map(({ id }) => id).filter(Boolean) + ), + ...Object.keys(metadata.dataSets), + ]), + ].map((id) => ({ id, field: 'dataSets' })), + ...Object.keys(metadata.programs).map((id) => ({ id, field: 'programs' })), +] + +/** + * Fetches the metadata getDataItemProfile needs for `items` + * ({ id, dimensionItemType }): data elements, data sets, indicators and their + * operands, nested indicators, expression dimension items, program + * indicators and programs. By default it also counts the org units each data + * set and program is assigned to per level (fetchAssignedOrgUnitCounts), for + * the profile's assigned org unit levels; `{ withAssignedOrgUnitCounts: + * false }` leaves them out. + */ +export const fetchDataItemProfileMetadata = async ( + dataEngine, + items = [], + { withAssignedOrgUnitCounts = true } = {} +) => { + const pending = createPending() + + items.forEach((item) => addItem(pending, item)) + + const metadata = await fetchRound(dataEngine, { + metadata: normalizeDataItemProfileMetadata(), + pending, + requested: createPending(), + }) + + if (!withAssignedOrgUnitCounts) { + return metadata + } + + const { levels, assignedOrgUnitCounts } = await fetchAssignedOrgUnitCounts( + dataEngine, + getSources(metadata) + ) + + return { ...metadata, orgUnitLevels: levels, assignedOrgUnitCounts } +} diff --git a/src/api/dataItemProfile/fetchOrgUnitCoverage.js b/src/api/dataItemProfile/fetchOrgUnitCoverage.js new file mode 100644 index 000000000..2a811416b --- /dev/null +++ b/src/api/dataItemProfile/fetchOrgUnitCoverage.js @@ -0,0 +1,197 @@ +import { + getOrgUnitsToFetch, + readOrgUnitSelection, +} from '../../modules/dataItemProfile/orgUnits/orgUnitSelection.js' +import { fetchAssignedOrgUnitCounts } from './assignedOrgUnitCounts.js' +import { + fetchGroupMembersByLevel, + getGroupCountQueries, +} from './orgUnitGroupCounts.js' +import { + assignedTo, + countQuery, + getTotal, + levelsQuery, + queryAll, + readLevels, +} from './orgUnitQueries.js' + +const ORG_UNIT_FIELDS = 'id,level,path,displayName' + +const orgUnitsQuery = (filter) => ({ + resource: 'organisationUnits', + params: { filter, fields: ORG_UNIT_FIELDS, paging: false }, +}) + +const byId = (orgUnits = []) => + Object.fromEntries( + orgUnits.map(({ id, level, path, displayName }) => [ + id, + { id, level, path, name: displayName }, + ]) + ) + +const getAncestorIds = ({ id, path }) => + path.split('/').filter((ancestorId) => ancestorId && ancestorId !== id) + +// The org units, roots and user's org units a selection needs, with the levels +const fetchOrgUnits = async (engine, orgUnitItems) => { + const { orgUnitIds, needsRoots, needsUserOrgUnits } = + getOrgUnitsToFetch(orgUnitItems) + const response = await engine.query({ + ...levelsQuery, + ...(orgUnitIds.length && { + orgUnits: orgUnitsQuery(`id:in:[${orgUnitIds.join(',')}]`), + }), + ...(needsRoots && { roots: orgUnitsQuery('level:eq:1') }), + ...(needsUserOrgUnits && { + me: { + resource: 'me', + params: { + fields: `organisationUnits[${ORG_UNIT_FIELDS}],dataViewOrganisationUnits[${ORG_UNIT_FIELDS}]`, + }, + }, + }), + }) + // Analytics reads the user's data view org units when there are some + const userOrgUnits = response.me?.dataViewOrganisationUnits?.length + ? response.me.dataViewOrganisationUnits + : response.me?.organisationUnits + + return { + levels: readLevels(response), + orgUnits: { + ...byId(response.orgUnits?.organisationUnits), + ...byId(response.roots?.organisationUnits), + ...byId(userOrgUnits), + }, + rootIds: needsRoots + ? (response.roots?.organisationUnits ?? []).map(({ id }) => id) + : [], + userOrgUnitIds: needsUserOrgUnits + ? (userOrgUnits ?? []).map(({ id }) => id) + : null, + } +} + +/* The counts of one org unit: how many org units each level under it has, + * how many of them each source is assigned to, and how many of its + * ancestors. Only levels a source is assigned at somewhere are counted. */ +const getOrgUnitQueries = (orgUnit, { sources, assignedOrgUnitCounts }) => { + const under = `path:like:${orgUnit.id}` + const ancestorIds = getAncestorIds(orgUnit) + const assignedLevelsOf = ({ id }) => + Object.keys(assignedOrgUnitCounts[id] ?? {}).map(Number) + const levelsUnder = (source) => + assignedLevelsOf(source).filter((level) => level >= orgUnit.level) + const isAssignedHigher = (source) => + assignedLevelsOf(source).some((level) => level < orgUnit.level) + const getAncestorsQuery = (source) => [ + [orgUnit.id, source.id, 'ancestors'], + countQuery([`id:in:[${ancestorIds.join(',')}]`, assignedTo(source)]), + ] + + return [ + ...[...new Set(sources.flatMap(levelsUnder))].map((level) => [ + [orgUnit.id, 'total', level], + countQuery([under, `level:eq:${level}`]), + ]), + ...sources.flatMap((source) => + levelsUnder(source).map((level) => [ + [orgUnit.id, source.id, level], + countQuery([under, `level:eq:${level}`, assignedTo(source)]), + ]) + ), + ...sources + .filter((source) => ancestorIds.length && isAssignedHigher(source)) + .map(getAncestorsQuery), + ] +} + +const readCounts = (queries, response) => { + const counts = {} + + queries.forEach(([[countsKey, what, level]], i) => { + counts[countsKey] ??= { totals: {}, sources: {} } + + const counted = counts[countsKey] + const total = getTotal(response[`count${i}`]) + + if (what === 'total') { + counted.totals[level] = total + return + } + + counted.sources[what] ??= { byLevel: {}, ancestors: 0 } + + if (level === 'ancestors') { + counted.sources[what].ancestors += total + } else { + counted.sources[what].byLevel[level] = total + } + }) + + return counts +} + +/** + * Where data sets and programs (`sources`, getCountableSources) are assigned, + * for an org unit selection (`orgUnits`, DV's org unit items). Gives: + * - `levels`, and `orgUnits` by id (the selection's, the roots for a level + * alone, the user's), with `rootIds` and `userOrgUnitIds`; + * - `groups`: each group's members per level; + * - `assignedOrgUnitCounts`: each source's assigned org units per level, + * across the hierarchy (those given are reused); + * - `counts`, by org unit id (and by getGroupCountsKey for groups): per level + * a source is assigned at, the number of org units and of those each + * source is assigned to, plus the ancestors each one is assigned to; + * - `requests`: how many counts were sent. + * All metadata; each round of requests goes out together. + * getDataItemProfileOrgUnitCompatibility reads the result. + */ +export const fetchOrgUnitCoverage = async ( + engine, + { sources = [], orgUnits: orgUnitItems = [], assignedOrgUnitCounts = {} } +) => { + const { levels, orgUnits, rootIds, userOrgUnitIds } = await fetchOrgUnits( + engine, + orgUnitItems + ) + const missing = sources.filter(({ id }) => !assignedOrgUnitCounts[id]) + const [assigned, grouped] = await Promise.all([ + fetchAssignedOrgUnitCounts(engine, missing, levels), + fetchGroupMembersByLevel( + engine, + getOrgUnitsToFetch(orgUnitItems).groupIds, + levels + ), + ]) + const allAssignedOrgUnitCounts = { + ...assignedOrgUnitCounts, + ...assigned.assignedOrgUnitCounts, + } + const context = { sources, assignedOrgUnitCounts: allAssignedOrgUnitCounts } + const queries = [ + ...Object.values(orgUnits).flatMap((orgUnit) => + getOrgUnitQueries(orgUnit, context) + ), + ...getGroupCountQueries({ + ...context, + groups: grouped.groups, + parentOrgUnitIds: + readOrgUnitSelection(orgUnitItems).parentOrgUnitIds, + orgUnits, + }), + ] + + return { + levels, + orgUnits, + rootIds, + userOrgUnitIds, + groups: grouped.groups, + assignedOrgUnitCounts: allAssignedOrgUnitCounts, + counts: readCounts(queries, await queryAll(engine, queries)), + requests: assigned.requests + grouped.requests + queries.length, + } +} diff --git a/src/api/dataItemProfile/metadataQueries.js b/src/api/dataItemProfile/metadataQueries.js new file mode 100644 index 000000000..3e413ba79 --- /dev/null +++ b/src/api/dataItemProfile/metadataQueries.js @@ -0,0 +1,119 @@ +const byIds = (fields) => ({ + params: ({ ids }) => ({ + fields, + filter: `id:in:[${ids.join(',')}]`, + paging: false, + }), +}) + +export const dataItemProfileMetadataQueries = { + dataElements: { + resource: 'dataElements', + ...byIds( + 'id,aggregationType,aggregationLevels,valueType,domainType,dataSetElements[dataSet[id,periodType]]' + ), + }, + indicators: { + resource: 'indicators', + ...byIds('id,numerator,denominator,annualized'), + }, + dataSets: { + resource: 'dataSets', + ...byIds('id,periodType'), + }, + expressionDimensionItems: { + resource: 'expressionDimensionItems', + ...byIds('id,expression'), + }, + programIndicators: { + resource: 'programIndicators', + ...byIds('id,program[id],orgUnitField,analyticsPeriodBoundaries[id]'), + }, + programs: { + resource: 'programs', + ...byIds('id,programType'), + }, +} + +export const METADATA_RESOURCES = Object.keys(dataItemProfileMetadataQueries) + +// A period type comes as a name, or as an object on some versions +const getPeriodTypeName = (periodType) => + typeof periodType === 'string' ? periodType : periodType?.name + +const getList = (response, resource) => + Array.isArray(response) ? response : response?.[resource] ?? [] + +// By id, or by period type when a version sends no id +const getDataSetKey = ({ id, periodType }) => id ?? periodType + +const uniqueDataSets = (dataSets) => + dataSets.filter( + (dataSet, i) => + dataSets.findIndex( + (other) => getDataSetKey(other) === getDataSetKey(dataSet) + ) === i + ) + +const normalizers = { + dataElements: ({ + aggregationType, + aggregationLevels, + valueType, + domainType, + dataSetElements, + }) => ({ + aggregationType, + ...(aggregationLevels?.length && { aggregationLevels }), + valueType, + domainType, + dataSets: uniqueDataSets( + (dataSetElements ?? []) + .map(({ dataSet }) => dataSet) + .filter((dataSet) => dataSet?.periodType) + .map(({ id, periodType }) => ({ + id, + periodType: getPeriodTypeName(periodType), + })) + ), + }), + indicators: ({ numerator, denominator, annualized }) => ({ + numerator, + denominator, + annualized, + }), + dataSets: ({ periodType }) => ({ + periodType: getPeriodTypeName(periodType), + }), + expressionDimensionItems: ({ expression }) => ({ expression }), + programIndicators: ({ + program, + orgUnitField, + analyticsPeriodBoundaries, + }) => ({ + program: program?.id, + ...(orgUnitField && { orgUnitField }), + ...(analyticsPeriodBoundaries && { + hasPeriodBoundaries: analyticsPeriodBoundaries.length > 0, + }), + }), + programs: ({ programType }) => ({ programType }), +} + +/** + * The lookups getDataItemProfile reads, by resource and id, from the + * responses of dataItemProfileMetadataQueries. Accepts a gist response and + * period types as objects. + */ +export const normalizeDataItemProfileMetadata = (responses = {}) => + Object.fromEntries( + METADATA_RESOURCES.map((resource) => [ + resource, + Object.fromEntries( + getList(responses[resource], resource).map((object) => [ + object.id, + normalizers[resource](object), + ]) + ), + ]) + ) diff --git a/src/api/dataItemProfile/orgUnitGroupCounts.js b/src/api/dataItemProfile/orgUnitGroupCounts.js new file mode 100644 index 000000000..195a6b7ff --- /dev/null +++ b/src/api/dataItemProfile/orgUnitGroupCounts.js @@ -0,0 +1,125 @@ +import { getGroupCountsKey } from '../../modules/dataItemProfile/orgUnits/orgUnitSelection.js' +import { + assignedTo, + countQuery, + getTotal, + inGroup, + queryAll, +} from './orgUnitQueries.js' + +/* Org units `depth` levels below a group's members (parent.parent…), or + * `height` levels above them (children.children…). ancestors.* doesn't + * filter; these work on 2.40 to 2.44 (checked by the test tool). */ +const belowMembers = (groupId, depth) => + 'parent.'.repeat(depth) + inGroup(groupId) +const aboveMembers = (groupId, height) => + 'children.'.repeat(height) + inGroup(groupId) + +/** + * Each group's members per level: `{ groups: { [groupId]: { [level]: count } }, + * requests }`. + */ +export const fetchGroupMembersByLevel = async (engine, groupIds, levels) => { + const queries = groupIds.flatMap((groupId) => + levels.map(({ level }) => [ + [groupId, level], + countQuery([inGroup(groupId), `level:eq:${level}`]), + ]) + ) + const response = await queryAll(engine, queries) + const groups = Object.fromEntries(groupIds.map((groupId) => [groupId, {}])) + + queries.forEach(([[groupId, level]], i) => { + const total = getTotal(response[`count${i}`]) + + if (total) { + groups[groupId][level] = total + } + }) + + return { groups, requests: queries.length } +} + +/* Each place to count a group in: the level its members are at, under each + * parent org unit at or above it (or none) */ +const getGroupPlaces = ({ groups, parentOrgUnitIds, orgUnits }) => { + const parents = parentOrgUnitIds.length ? parentOrgUnitIds : [null] + + return Object.entries(groups).flatMap(([groupId, membersByLevel]) => + Object.keys(membersByLevel) + .map(Number) + .flatMap((memberLevel) => + parents + .filter( + (parentId) => + !parentId || + orgUnits[parentId]?.level <= memberLevel + ) + .map((parentId) => ({ groupId, memberLevel, parentId })) + ) + ) +} + +/* The counts of one place, as for an org unit: the org units at each level + * under the members (the members' level included, to know whether any lie + * under the parent), those each source is assigned to, and the ones above + * the members each source is assigned to (above any member: the filter can't + * keep them under the parent, and they only tell ASSIGNED_AT_HIGHER_LEVEL + * from NOT_ASSIGNED) */ +const getPlaceQueries = ( + { groupId, memberLevel, parentId }, + { sources, assignedOrgUnitCounts } +) => { + const key = getGroupCountsKey(groupId, memberLevel, parentId) + const underParent = parentId ? [`path:like:${parentId}`] : [] + const levelsOf = ({ id }) => + Object.keys(assignedOrgUnitCounts[id] ?? {}).map(Number) + const atLevel = (level) => [ + ...underParent, + belowMembers(groupId, level - memberLevel), + `level:eq:${level}`, + ] + const totalLevels = new Set([ + memberLevel, + ...sources.flatMap(levelsOf).filter((level) => level >= memberLevel), + ]) + const getSourceQuery = (source, level) => + level >= memberLevel + ? [ + [key, source.id, level], + countQuery([...atLevel(level), assignedTo(source)]), + ] + : [ + [key, source.id, 'ancestors'], + countQuery([ + aboveMembers(groupId, memberLevel - level), + `level:eq:${level}`, + assignedTo(source), + ]), + ] + + return [ + ...[...totalLevels].map((level) => [ + [key, 'total', level], + countQuery(atLevel(level)), + ]), + ...sources.flatMap((source) => + levelsOf(source).map((level) => getSourceQuery(source, level)) + ), + ] +} + +/** + * The count queries for groups (`groups`, from fetchGroupMembersByLevel), + * kept by getGroupCountsKey, in the shape fetchOrgUnitCoverage reads. + */ +export const getGroupCountQueries = ({ + groups, + parentOrgUnitIds, + orgUnits, + sources, + assignedOrgUnitCounts, +}) => + getGroupPlaces({ groups, parentOrgUnitIds, orgUnits }).flatMap((place) => + getPlaceQueries(place, { sources, assignedOrgUnitCounts }) + ) diff --git a/src/api/dataItemProfile/orgUnitQueries.js b/src/api/dataItemProfile/orgUnitQueries.js new file mode 100644 index 000000000..82af6f40d --- /dev/null +++ b/src/api/dataItemProfile/orgUnitQueries.js @@ -0,0 +1,40 @@ +/* Requests on organisationUnits, all metadata. Counts use pageSize=1: the + * total is in the pager, so large hierarchies cost the same. */ + +// A count with no list +export const countQuery = (filter) => ({ + resource: 'organisationUnits', + params: { filter, fields: 'id', pageSize: 1 }, +}) + +export const getTotal = (response) => response?.pager?.total ?? 0 + +// The filter on org units a data set or program ({ id, field }) is assigned to +export const assignedTo = ({ id, field }) => `${field}.id:eq:${id}` + +export const inGroup = (groupId) => `organisationUnitGroups.id:eq:${groupId}` + +/** + * Sends `queries`, `[key, query]` pairs, in one request; the response for + * the i-th is `count`. + */ +export const queryAll = (engine, queries) => + queries.length + ? engine.query( + Object.fromEntries( + queries.map(([, query], i) => [`count${i}`, query]) + ) + ) + : {} + +export const levelsQuery = { + levels: { + resource: 'organisationUnitLevels', + params: { fields: 'id,level,displayName', paging: false }, + }, +} + +export const readLevels = (response) => + (response?.levels?.organisationUnitLevels ?? []) + .map(({ id, level, displayName }) => ({ id, level, name: displayName })) + .sort((a, b) => a.level - b.level) diff --git a/src/api/orgUnitCoverage.js b/src/api/orgUnitCoverage.js deleted file mode 100644 index e1854d8ed..000000000 --- a/src/api/orgUnitCoverage.js +++ /dev/null @@ -1,266 +0,0 @@ -import { - getUnitsToCount, - readOrgUnitSelection, -} from '../modules/dataItemProfile/orgUnitSelection.js' -import { - getSourceField, - getSourceId, - isPlacedAnywhere, -} from '../modules/dataItemProfile/sources.js' -import { fetchGroupLevels, getGroupCountQueries } from './orgUnitGroupCounts.js' -import { assignedTo, countQuery, getTotal, queryAll } from './orgUnitQueries.js' - -const UNIT_FIELDS = 'id,level,path,displayName' - -const unitsQuery = (filter) => ({ - resource: 'organisationUnits', - params: { filter, fields: UNIT_FIELDS, paging: false }, -}) - -const byId = (units = []) => - Object.fromEntries( - units.map(({ id, level, path, displayName }) => [ - id, - { id, level, path, name: displayName }, - ]) - ) - -const getAncestorIds = ({ id, path }) => - path.split('/').filter((ancestorId) => ancestorId && ancestorId !== id) - -/** - * The data sets and programs behind profiles (getDataItemProfile results), - * whose assignment fetchOrgUnitCoverage counts: `[{ id, field }]`, `field` - * being the org unit field that lists them (dataSets or programs). - */ -export const getProfilesSources = (profiles = []) => [ - ...new Map( - profiles - .flatMap((profile) => profile?.sources ?? []) - .filter( - (source) => getSourceId(source) && !isPlacedAnywhere(source) - ) - .map((source) => [ - getSourceId(source), - { id: getSourceId(source), field: getSourceField(source) }, - ]) - ).values(), -] - -// The units, roots and user's units a selection needs, with the levels -const fetchUnits = async (engine, orgUnits) => { - const { unitIds, needsRoots, needsUser } = getUnitsToCount(orgUnits) - const response = await engine.query({ - ...levelsQuery, - ...(unitIds.length && { - units: unitsQuery(`id:in:[${unitIds.join(',')}]`), - }), - ...(needsRoots && { roots: unitsQuery('level:eq:1') }), - ...(needsUser && { - me: { - resource: 'me', - params: { - fields: `organisationUnits[${UNIT_FIELDS}],dataViewOrganisationUnits[${UNIT_FIELDS}]`, - }, - }, - }), - }) - // Analytics reads the user's data view units when there are some - const userUnits = response.me?.dataViewOrganisationUnits?.length - ? response.me.dataViewOrganisationUnits - : response.me?.organisationUnits - const levels = readLevels(response) - - return { - levels, - units: { - ...byId(response.units?.organisationUnits), - ...byId(response.roots?.organisationUnits), - ...byId(userUnits), - }, - roots: needsRoots - ? (response.roots?.organisationUnits ?? []).map(({ id }) => id) - : [], - userUnits: needsUser ? (userUnits ?? []).map(({ id }) => id) : null, - } -} - -// Each source's assigned units per level, across the whole hierarchy -const getAssignedLevelQueries = (sources, levels) => - sources.flatMap((source) => - levels.map(({ level }) => [ - [source.id, level], - countQuery([`level:eq:${level}`, assignedTo(source)]), - ]) - ) - -const readAssignedLevels = (sources, queries, response) => { - const bySource = Object.fromEntries(sources.map(({ id }) => [id, {}])) - - queries.forEach(([[sourceId, level]], i) => { - const byLevel = bySource[sourceId] - const total = getTotal(response[`count${i}`]) - - if (total) { - byLevel[level] = total - } - }) - - return bySource -} - -const levelsQuery = { - levels: { - resource: 'organisationUnitLevels', - params: { fields: 'id,level,displayName', paging: false }, - }, -} - -const readLevels = (response) => - (response?.levels?.organisationUnitLevels ?? []) - .map(({ id, level, displayName }) => ({ id, level, name: displayName })) - .sort((a, b) => a.level - b.level) - -/** - * Each source's assigned units per level, across the hierarchy, as counts - * (pageSize=1): where its data is entered. `sources` are `[{ id, field }]` - * (getProfilesSources), `levels` are fetched when not given. Gives - * `{ levels, assignedLevels: { [sourceId]: { [level]: count } }, requests }`; - * getDataItemProfile reads `assignedLevels` for the profile's org unit side. - */ -export const fetchSourceOrgUnitLevels = async (engine, sources, levels) => { - const knownLevels = levels ?? readLevels(await engine.query(levelsQuery)) - const queries = getAssignedLevelQueries(sources, knownLevels) - - return { - levels: knownLevels, - assignedLevels: readAssignedLevels( - sources, - queries, - await queryAll(engine, queries) - ), - requests: queries.length, - } -} - -/* For each unit: how many units each level under it has, how many of them - * each source is assigned to, and how many of its ancestors. Only levels a - * source is assigned at somewhere are counted. */ -const getCountQueries = (units, sources, assignedLevels) => - Object.values(units).flatMap((unit) => { - const under = `path:like:${unit.id}` - const ancestorIds = getAncestorIds(unit) - const levelsOf = ({ id }) => - Object.keys(assignedLevels[id] ?? {}) - .map(Number) - .filter((level) => level >= unit.level) - const isAssignedAbove = ({ id }) => - Object.keys(assignedLevels[id] ?? {}).some( - (level) => Number(level) < unit.level - ) - const totalLevels = [...new Set(sources.flatMap(levelsOf))] - - return [ - ...totalLevels.map((level) => [ - [unit.id, 'total', level], - countQuery([under, `level:eq:${level}`]), - ]), - ...sources.flatMap((source) => [ - ...levelsOf(source).map((level) => [ - [unit.id, source.id, level], - countQuery([ - under, - `level:eq:${level}`, - assignedTo(source), - ]), - ]), - ...(ancestorIds.length && isAssignedAbove(source) - ? [ - [ - [unit.id, source.id, 'ancestors'], - countQuery([ - `id:in:[${ancestorIds.join(',')}]`, - assignedTo(source), - ]), - ], - ] - : []), - ]), - ] - }) - -const readCounts = (queries, response) => { - const counts = {} - - queries.forEach(([[unitId, what, level]], i) => { - const unit = - counts[unitId] || (counts[unitId] = { totals: {}, sources: {} }) - const total = getTotal(response[`count${i}`]) - - if (what === 'total') { - unit.totals[level] = total - return - } - - const source = - unit.sources[what] || - (unit.sources[what] = { byLevel: {}, ancestors: 0 }) - - if (level === 'ancestors') { - source.ancestors += total - } else { - source.byLevel[level] = total - } - }) - - return counts -} - -/** - * Where data sets and programs (`sources`, getProfilesSources) are assigned, - * under the units of an org unit selection (DV's org unit items): the - * levels, the units (boundaries, roots for a level alone, the user's units), - * each group's members per level (`groups`), each source's `assignedLevels` - * across the hierarchy, and for each unit (and group, by getGroupCountsKey), per - * level below it that a source is assigned at, the number of units and of - * units each source is assigned to, plus its ancestors each one is assigned - * to. Only counts are fetched - * (pageSize=1), so large hierarchies cost the same; each round of requests - * goes out together. getDataItemOrgUnitCompatibility reads the result. - */ -export const fetchOrgUnitCoverage = async ( - engine, - { sources = [], orgUnits = [], assignedLevels: known = {} } -) => { - const { levels, units, roots, userUnits } = await fetchUnits( - engine, - orgUnits - ) - const missing = sources.filter(({ id }) => !known[id]) - const [counted, grouped] = await Promise.all([ - fetchSourceOrgUnitLevels(engine, missing, levels), - fetchGroupLevels(engine, getUnitsToCount(orgUnits).groupIds, levels), - ]) - const assignedLevels = { ...known, ...counted.assignedLevels } - const queries = [ - ...getCountQueries(units, sources, assignedLevels), - ...getGroupCountQueries({ - groups: grouped.groups, - boundaries: readOrgUnitSelection(orgUnits).boundaries, - units, - sources, - assignedLevels, - }), - ] - - return { - levels, - units, - roots, - userUnits, - groups: grouped.groups, - assignedLevels, - counts: readCounts(queries, await queryAll(engine, queries)), - requests: counted.requests + grouped.requests + queries.length, - } -} diff --git a/src/api/orgUnitGroupCounts.js b/src/api/orgUnitGroupCounts.js deleted file mode 100644 index 03b96bf8b..000000000 --- a/src/api/orgUnitGroupCounts.js +++ /dev/null @@ -1,114 +0,0 @@ -import { getGroupCountsKey } from '../modules/dataItemProfile/orgUnitSelection.js' -import { assignedTo, countQuery, getTotal, queryAll } from './orgUnitQueries.js' - -const inGroup = (group) => `organisationUnitGroups.id:eq:${group}` - -/* Units `depth` levels under a group's members (parent.parent…), or above - * them (children.children…) */ -const underMembers = (group, depth) => 'parent.'.repeat(depth) + inGroup(group) -const aboveMembers = (group, height) => - 'children.'.repeat(height) + inGroup(group) - -/** - * Each group's members per level, as counts: `{ [group]: { [level]: count } }`. - */ -export const fetchGroupLevels = async (engine, groupIds, levels) => { - const queries = groupIds.flatMap((group) => - levels.map(({ level }) => [ - [group, level], - countQuery([inGroup(group), `level:eq:${level}`]), - ]) - ) - const response = await queryAll(engine, queries) - const groups = Object.fromEntries(groupIds.map((group) => [group, {}])) - - queries.forEach(([[group, level]], i) => { - const total = getTotal(response[`count${i}`]) - - if (total) { - groups[group][level] = total - } - }) - - return { groups, requests: queries.length } -} - -/* For each group, level its members are at, and boundary (or none), the same - * counts as for a unit: the units at each level under the members (the - * members' level included, to know whether any lie in the boundary), those - * each source is assigned to, and the units above the members each source is - * assigned to (above any member: the filter can't keep them to the - * boundary, and they only tell BELOW_COLLECTION from NOT_ASSIGNED). */ -export const getGroupCountQueries = ({ - groups, - boundaries, - units, - sources, - assignedLevels, -}) => - Object.entries(groups).flatMap(([group, memberLevels]) => - Object.keys(memberLevels) - .map(Number) - .flatMap((memberLevel) => - (boundaries.length ? boundaries : [null]) - .filter( - (unitId) => - !unitId || - (units[unitId] && - units[unitId].level <= memberLevel) - ) - .flatMap((unitId) => { - const key = getGroupCountsKey( - group, - memberLevel, - unitId - ) - const within = unitId ? [`path:like:${unitId}`] : [] - const levelsOf = ({ id }) => - Object.keys(assignedLevels[id] ?? {}).map(Number) - const under = (level) => [ - ...within, - underMembers(group, level - memberLevel), - `level:eq:${level}`, - ] - const totalLevels = [ - ...new Set([ - memberLevel, - ...sources - .flatMap(levelsOf) - .filter((level) => level >= memberLevel), - ]), - ] - - return [ - ...totalLevels.map((level) => [ - [key, 'total', level], - countQuery(under(level)), - ]), - ...sources.flatMap((source) => - levelsOf(source).map((level) => - level >= memberLevel - ? [ - [key, source.id, level], - countQuery([ - ...under(level), - assignedTo(source), - ]), - ] - : [ - [key, source.id, 'ancestors'], - countQuery([ - aboveMembers( - group, - memberLevel - level - ), - `level:eq:${level}`, - assignedTo(source), - ]), - ] - ) - ), - ] - }) - ) - ) diff --git a/src/api/orgUnitQueries.js b/src/api/orgUnitQueries.js deleted file mode 100644 index 6a9119226..000000000 --- a/src/api/orgUnitQueries.js +++ /dev/null @@ -1,20 +0,0 @@ -// A count with no list: pageSize=1 gives the total in the pager -export const countQuery = (filter) => ({ - resource: 'organisationUnits', - params: { filter, fields: 'id', pageSize: 1 }, -}) - -export const getTotal = (response) => response?.pager?.total ?? 0 - -// The filter on units a data set or program is assigned to -export const assignedTo = ({ id, field }) => `${field}.id:eq:${id}` - -// Queries as [key, query] pairs, sent together; the response is keyed count -export const queryAll = (engine, queries) => - queries.length - ? engine.query( - Object.fromEntries( - queries.map(([, query], i) => [`count${i}`, query]) - ) - ) - : {} diff --git a/src/components/DataItemProfile/__tests__/hooks.spec.js b/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js similarity index 93% rename from src/components/DataItemProfile/__tests__/hooks.spec.js rename to src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js index 069d044ad..784d35447 100644 --- a/src/components/DataItemProfile/__tests__/hooks.spec.js +++ b/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js @@ -113,13 +113,13 @@ describe('useDataItemProfiles', () => { expect(result.current.error).toBeUndefined() expect(result.current.profiles.monthly).toMatchObject({ unknown: false, - period: { finest: 'Monthly' }, + assignedPeriodTypes: { shortestDirectType: 'Monthly' }, }) expect(result.current.profiles.coverage).toMatchObject({ - period: { + assignedPeriodTypes: { types: ['Monthly', 'Yearly'], - finest: 'Yearly', - mixed: true, + shortestDirectType: 'Yearly', + hasSeveral: true, }, }) }) @@ -190,13 +190,13 @@ describe('useDataItemProfiles', () => { id: 'nationUnit1', status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 2, total: 3, level: 1 }, + assignment: { assigned: 2, total: 3, level: 1 }, }, ]) expect(result.current.loading).toBe(false) }) - it('gives profiles their org unit side, or from the coverage when told not to', async () => { + it('gives profiles their assigned org unit levels, or from the coverage when told not to count them', async () => { const assigned = [{ id: 'assigned', dimensionItemType: 'DATA_ELEMENT' }] const byDefault = renderProfiles(assigned) @@ -204,24 +204,28 @@ describe('useDataItemProfiles', () => { expect(byDefault.result.current.profiles).toBeDefined() ) - expect(byDefault.result.current.profiles.assigned.orgUnit).toEqual({ + expect( + byDefault.result.current.profiles.assigned.assignedOrgUnitLevels + ).toEqual({ levels: [1], - entryLevel: 1, - mixed: false, + deepestLevel: 1, + hasSeveral: false, }) const skipped = renderProfiles(assigned, createData(), { - orgUnitLevels: false, + withAssignedOrgUnitCounts: false, }) await waitFor(() => expect(skipped.result.current.profiles).toBeDefined() ) - expect(skipped.result.current.profiles.assigned.orgUnit).toBeUndefined() + expect( + skipped.result.current.profiles.assigned.assignedOrgUnitLevels + ).toBeUndefined() const filledLater = renderProfiles(assigned, createData(), { - orgUnitLevels: false, + withAssignedOrgUnitCounts: false, orgUnits: ['nationUnit1'], }) @@ -229,10 +233,12 @@ describe('useDataItemProfiles', () => { expect(filledLater.result.current.orgUnitCoverage).toBeDefined() ) - expect(filledLater.result.current.profiles.assigned.orgUnit).toEqual({ + expect( + filledLater.result.current.profiles.assigned.assignedOrgUnitLevels + ).toEqual({ levels: [1], - entryLevel: 1, - mixed: false, + deepestLevel: 1, + hasSeveral: false, }) }) diff --git a/src/components/DataItemProfile/__tests__/utils.spec.js b/src/components/DataItemProfile/__tests__/utils.spec.js new file mode 100644 index 000000000..ba68764b4 --- /dev/null +++ b/src/components/DataItemProfile/__tests__/utils.spec.js @@ -0,0 +1,61 @@ +import { + fetchRelativePeriodTypeOptions, + getItemsKey, + parseItemsKey, +} from '../utils.js' + +const settingsEngine = (settings) => ({ + query: jest.fn(async ({ setting }) => { + const key = setting.resource.split('/')[1] + + if (!(key in settings)) { + throw new Error('not found') + } + + return { setting: { [key]: settings[key] } } + }), +}) + +describe('fetchRelativePeriodTypeOptions', () => { + it('reads the period types of relative weeks and financial years from the settings', async () => { + expect( + await fetchRelativePeriodTypeOptions( + settingsEngine({ + analyticsWeeklyStart: 'WEEKLY_WEDNESDAY', + analyticsFinancialYearStart: 'FINANCIAL_YEAR_APRIL', + }) + ) + ).toEqual({ + weeklyPeriodType: 'WeeklyWednesday', + financialYearPeriodType: 'FinancialApril', + }) + }) + + it('leaves out a setting the server doesn’t have', async () => { + expect( + await fetchRelativePeriodTypeOptions( + settingsEngine({ analyticsWeeklyStart: 'WEEKLY' }) + ) + ).toEqual({ + weeklyPeriodType: 'Weekly', + financialYearPeriodType: undefined, + }) + }) +}) + +describe('items keys', () => { + it('compare items by value, and read them back', () => { + const items = [{ id: 'elementAAAA', dimensionItemType: 'DATA_ELEMENT' }] + const key = getItemsKey(items) + + expect(getItemsKey([...items])).toBe(key) + expect(parseItemsKey(key)).toEqual(items) + }) + + it('accept ids alone, and no items', () => { + expect(parseItemsKey(getItemsKey(['elementAAAA']))).toEqual([ + { id: 'elementAAAA', dimensionItemType: undefined }, + ]) + expect(getItemsKey()).toBe('[]') + }) +}) diff --git a/src/components/DataItemProfile/useDataItemProfiles.js b/src/components/DataItemProfile/useDataItemProfiles.js index 773a2aa2d..f18ddee32 100644 --- a/src/components/DataItemProfile/useDataItemProfiles.js +++ b/src/components/DataItemProfile/useDataItemProfiles.js @@ -1,13 +1,11 @@ import { useConfig } from '@dhis2/app-runtime' import { useCallback, useEffect, useMemo, useState } from 'react' -import { fetchDataItemProfileMetadata } from '../../api/dataItemProfile.js' -import { - fetchOrgUnitCoverage, - getProfilesSources, -} from '../../api/orgUnitCoverage.js' +import { getCountableSources } from '../../api/dataItemProfile/assignedOrgUnitCounts.js' +import { fetchDataItemProfileMetadata } from '../../api/dataItemProfile/fetchDataItemProfileMetadata.js' +import { fetchOrgUnitCoverage } from '../../api/dataItemProfile/fetchOrgUnitCoverage.js' import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' import { getDataItemProfileCompatibility } from '../../modules/dataItemProfile/getDataItemProfileCompatibility.js' -import { withOrgUnitSide } from '../../modules/dataItemProfile/orgUnitSide.js' +import { addAssignedOrgUnitLevels } from '../../modules/dataItemProfile/profile/assignedOrgUnitLevels.js' import { fetchRelativePeriodTypeOptions, getItemsKey, @@ -17,27 +15,28 @@ import { } from './utils.js' /** - * The profiles of data items, and whether a selection suits them - * (capabilities 1 and 2). + * The profiles of data items, and whether a selection suits them. * * `items` are { id, dimensionItemType }, as in a visualization's dx items. - * Each profile has its org unit side (the levels its data sets are assigned - * at) unless `orgUnitLevels: false`; then it gets it once `orgUnits` are - * given and their coverage is loaded. - * `profiles` are keyed by item id. `getDataItemCompatibility(itemId, - * { periods })` runs getDataItemProfileCompatibility on the item's profile, - * with the server's settings for relative weeks and financial years, its - * calendar and its version; it gives undefined for an item not loaded. + * `profiles` are keyed by item id. Each has its assigned org unit levels + * unless `withAssignedOrgUnitCounts: false`; it then gets them once + * `orgUnits` are given and their coverage is loaded. + * + * `getDataItemCompatibility(itemId, { periods, orgUnits })` runs + * getDataItemProfileCompatibility on the item's profile, with the server's + * settings for relative weeks and financial years, its calendar and its + * version; it gives undefined for an item not loaded. * - * With `orgUnits` (DV's org unit items), it also loads where the items' data - * sets are assigned under them (fetchOrgUnitCoverage, `orgUnitCoverage`), so - * `getDataItemCompatibility(itemId, { periods, orgUnits })` judges org units - * too: any selection whose units it loaded, such as a level under one of + * Periods need no request, so they are only passed to + * getDataItemCompatibility. Org units do: `orgUnits` (DV's org unit items) + * loads where the items' data sets and programs are assigned under them + * (fetchOrgUnitCoverage, `orgUnitCoverage`), so getDataItemCompatibility can + * judge any selection whose org units it loaded, such as a level under one of * them. */ export const useDataItemProfiles = ( items, - { calendar, orgUnits, orgUnitLevels = true } = {} + { calendar, orgUnits, withAssignedOrgUnitCounts = true } = {} ) => { const engineRef = useEngineRef() const itemsKey = getItemsKey(items) @@ -74,7 +73,7 @@ export const useDataItemProfiles = ( Promise.all([ fetchDataItemProfileMetadata(engine, requestedItems, { - orgUnitLevels, + withAssignedOrgUnitCounts, }), fetchRelativePeriodTypeOptions(engine), ]) @@ -92,7 +91,7 @@ export const useDataItemProfiles = ( return () => { cancelled = true } - }, [engineRef, itemsKey, orgUnitLevels]) + }, [engineRef, itemsKey, withAssignedOrgUnitCounts]) const metadataProfiles = useMemo( () => @@ -108,10 +107,10 @@ export const useDataItemProfiles = ( const sourcesKey = JSON.stringify( metadataProfiles - ? getProfilesSources(Object.values(metadataProfiles)) + ? getCountableSources(Object.values(metadataProfiles)) : null ) - const knownAssignedLevels = state.metadata?.dataSetOrgUnitLevels + const knownAssignedOrgUnitCounts = state.metadata?.assignedOrgUnitCounts useEffect(() => { const engine = engineRef.current @@ -133,7 +132,7 @@ export const useDataItemProfiles = ( fetchOrgUnitCoverage(engine, { sources, orgUnits: requestedOrgUnits, - assignedLevels: knownAssignedLevels, + assignedOrgUnitCounts: knownAssignedOrgUnitCounts, }) .then((coverage) => { if (!cancelled) { @@ -149,20 +148,20 @@ export const useDataItemProfiles = ( return () => { cancelled = true } - }, [engineRef, sourcesKey, orgUnitsKey, knownAssignedLevels]) + }, [engineRef, sourcesKey, orgUnitsKey, knownAssignedOrgUnitCounts]) - // Without the counts in the metadata, the coverage gives the org unit side + // Without the counts in the metadata, the coverage gives the assigned org unit levels const profiles = useMemo( () => metadataProfiles && Object.fromEntries( Object.entries(metadataProfiles).map(([id, profile]) => [ id, - profile.orgUnit || !coverageState.coverage + profile.assignedOrgUnitLevels || !coverageState.coverage ? profile - : withOrgUnitSide( + : addAssignedOrgUnitLevels( profile, - coverageState.coverage.assignedLevels + coverageState.coverage.assignedOrgUnitCounts ), ]) ), diff --git a/src/components/DataItemProfile/utils.js b/src/components/DataItemProfile/utils.js index 2259e03c5..7dc6343e5 100644 --- a/src/components/DataItemProfile/utils.js +++ b/src/components/DataItemProfile/utils.js @@ -1,6 +1,6 @@ import { useConfig, useDataEngine } from '@dhis2/app-runtime' import { useRef } from 'react' -import { getRelativePeriodTypeOptions } from '../../modules/dataItemProfile/periodTypes.js' +import { getRelativePeriodTypeOptions } from '../../modules/dataItemProfile/periods/periodTypes.js' const SETTING_KEYS = ['analyticsWeeklyStart', 'analyticsFinancialYearStart'] diff --git a/src/components/PeriodDimension/useDataOutputPeriodTypes.js b/src/components/PeriodDimension/useDataOutputPeriodTypes.js index f76031fdb..719e09fd9 100644 --- a/src/components/PeriodDimension/useDataOutputPeriodTypes.js +++ b/src/components/PeriodDimension/useDataOutputPeriodTypes.js @@ -1,5 +1,9 @@ import { useConfig, useDataQuery } from '@dhis2/app-runtime' import { useEffect, useMemo } from 'react' +import { + FINANCIAL_YEAR_START_TO_PERIOD_TYPE, + WEEKLY_START_TO_PERIOD_TYPE, +} from './utils/enabledPeriodTypes.js' const v43Query = { enabledPeriodTypes: { @@ -18,27 +22,6 @@ const v43Query = { }, } -// v43-only: analyticsFinancialYearStart is removed in v44 -const FY_SETTING_TO_SERVER_PT = { - FINANCIAL_YEAR_FEBRUARY: 'FinancialFeb', - FINANCIAL_YEAR_APRIL: 'FinancialApril', - FINANCIAL_YEAR_JULY: 'FinancialJuly', - FINANCIAL_YEAR_AUGUST: 'FinancialAug', - FINANCIAL_YEAR_SEPTEMBER: 'FinancialSep', - FINANCIAL_YEAR_OCTOBER: 'FinancialOct', - FINANCIAL_YEAR_NOVEMBER: 'FinancialNov', -} - -// v43-only: analyticsWeeklyStart is removed in v44 -const WEEKLY_START_TO_SERVER_PT = { - WEEKLY: 'Weekly', - WEEKLY_WEDNESDAY: 'WeeklyWednesday', - WEEKLY_THURSDAY: 'WeeklyThursday', - WEEKLY_FRIDAY: 'WeeklyFriday', - WEEKLY_SATURDAY: 'WeeklySaturday', - WEEKLY_SUNDAY: 'WeeklySunday', -} - const useDataOutputPeriodTypes = () => { const { serverVersion } = useConfig() const supportsEnabledPeriodTypes = serverVersion.minor >= 43 @@ -82,7 +65,7 @@ const useDataOutputPeriodTypes = () => { const fyStartValue = v43Data.financialYearStart.analyticsFinancialYearStart - const mappedFyPt = FY_SETTING_TO_SERVER_PT[fyStartValue] + const mappedFyPt = FINANCIAL_YEAR_START_TO_PERIOD_TYPE[fyStartValue] const matchingPt = enabledTypes.find((pt) => pt.name === mappedFyPt) if (matchingPt) { financialYearStart = fyStartValue @@ -97,7 +80,7 @@ const useDataOutputPeriodTypes = () => { if (v43Data.weeklyStart?.analyticsWeeklyStart) { const weeklyStartValue = v43Data.weeklyStart.analyticsWeeklyStart - const mappedWeeklyPt = WEEKLY_START_TO_SERVER_PT[weeklyStartValue] + const mappedWeeklyPt = WEEKLY_START_TO_PERIOD_TYPE[weeklyStartValue] const matchingWeeklyPt = enabledTypes.find( (pt) => pt.name === mappedWeeklyPt ) diff --git a/src/components/PeriodDimension/utils/enabledPeriodTypes.js b/src/components/PeriodDimension/utils/enabledPeriodTypes.js index 7cadc0833..6ca3915f7 100644 --- a/src/components/PeriodDimension/utils/enabledPeriodTypes.js +++ b/src/components/PeriodDimension/utils/enabledPeriodTypes.js @@ -25,6 +25,28 @@ export const SERVER_PT_TO_MULTI_CALENDAR_PT = { FinancialNov: 'FYNOV', } +// VERSION-TOGGLE: analyticsWeeklyStart and analyticsFinancialYearStart are removed in v44 +// The period type of relative weeks, by the analyticsWeeklyStart setting +export const WEEKLY_START_TO_PERIOD_TYPE = { + WEEKLY: 'Weekly', + WEEKLY_WEDNESDAY: 'WeeklyWednesday', + WEEKLY_THURSDAY: 'WeeklyThursday', + WEEKLY_FRIDAY: 'WeeklyFriday', + WEEKLY_SATURDAY: 'WeeklySaturday', + WEEKLY_SUNDAY: 'WeeklySunday', +} + +// The period type of relative financial years, by the analyticsFinancialYearStart setting +export const FINANCIAL_YEAR_START_TO_PERIOD_TYPE = { + FINANCIAL_YEAR_FEBRUARY: 'FinancialFeb', + FINANCIAL_YEAR_APRIL: 'FinancialApril', + FINANCIAL_YEAR_JULY: 'FinancialJuly', + FINANCIAL_YEAR_AUGUST: 'FinancialAug', + FINANCIAL_YEAR_SEPTEMBER: 'FinancialSep', + FINANCIAL_YEAR_OCTOBER: 'FinancialOct', + FINANCIAL_YEAR_NOVEMBER: 'FinancialNov', +} + // Mapping from relative period categories to their corresponding fixed period types export const RP_CATEGORY_TO_FP_DEPENDENCIES = { DAILY: ['Daily'], diff --git a/src/index.js b/src/index.js index b1156646c..8cf2fa359 100644 --- a/src/index.js +++ b/src/index.js @@ -334,50 +334,56 @@ export { renderValue as formatValue } from './modules/renderValue.js' // Modules: dataItemProfile +export { getDataItemProfile } from './modules/dataItemProfile/getDataItemProfile.js' +export { getPeriodAggregationType } from './modules/dataItemProfile/profile/collectSources.js' +export { addAssignedOrgUnitLevels } from './modules/dataItemProfile/profile/assignedOrgUnitLevels.js' +export { getDataItemProfileCompatibility } from './modules/dataItemProfile/getDataItemProfileCompatibility.js' +export { getDataItemProfilePeriodCompatibility } from './modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js' +export { getDataItemProfileOrgUnitCompatibility } from './modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js' export { - getDataItemProfile, - getPeriodAggregationType, -} from './modules/dataItemProfile/getDataItemProfile.js' + canAggregateInto, + getCandidatePeriodTypes, +} from './modules/dataItemProfile/periods/periodTypes.js' +export { + comparePeriodRanges, + getCoveringPeriodRange, +} from './modules/dataItemProfile/periods/periodRanges.js' export { - getDataItemProfileCompatibility, COMPATIBILITY_FULL, COMPATIBILITY_PARTIAL, COMPATIBILITY_NONE, COMPATIBILITY_UNKNOWN, - REASON_AVERAGED, - REASON_CARRIED, - REASON_SHORTER, - REASON_OTHER_TYPE, - REASON_REPORTING_RATE, - REASON_NOTHING_TO_CARRY, REASON_OPERAND_EMPTY, REASON_OPERAND_PARTIAL, + REASON_PERIOD_TOO_SHORT, + REASON_PERIOD_TYPE_MISMATCH, + REASON_REPORTING_RATE_TOO_SHORT, + REASON_NO_EARLIER_PERIOD_VALUE, + REASON_REPEATED_VALUE, + REASON_EARLIER_PERIOD_VALUE, + REASON_NOT_ASSIGNED, + REASON_ASSIGNED_AT_HIGHER_LEVEL, + REASON_STOPPED_BY_AGGREGATION_LEVEL, + REASON_EMPTY_GROUP, + REASON_PARTLY_ASSIGNED, + REASON_ANY_ORG_UNIT, REASON_PROFILE_UNKNOWN, REASON_UNKNOWN_PERIOD, REASON_SETTING_MISSING, REASON_UNSUPPORTED_VERSION, -} from './modules/dataItemProfile/getDataItemProfileCompatibility.js' -export { - aggregatesInto, - getPeriodRelation, - widenToWholePeriods, -} from './modules/dataItemProfile/periodTypeRelations.js' -export { - getDataItemOrgUnitCompatibility, - REASON_NOT_ASSIGNED, - REASON_BELOW_COLLECTION, - REASON_AGGREGATION_LEVEL, - REASON_PARTLY_ASSIGNED, - REASON_ORG_UNIT_FIELD, REASON_UNKNOWN_ORG_UNIT, - REASON_EVENT_DATA, -} from './modules/dataItemProfile/getDataItemOrgUnitCompatibility.js' -export { fetchDataItemProfileMetadata } from './api/dataItemProfile.js' + PERIOD_RANGE_SAME, + PERIOD_RANGE_WITHIN, + PERIOD_RANGE_CONTAINS, + PERIOD_RANGE_OVERLAPS, + PERIOD_RANGE_DISJOINT, +} from './modules/dataItemProfile/constants.js' +export { fetchDataItemProfileMetadata } from './api/dataItemProfile/fetchDataItemProfileMetadata.js' export { - fetchOrgUnitCoverage, - fetchSourceOrgUnitLevels, -} from './api/orgUnitCoverage.js' -export { withOrgUnitSide } from './modules/dataItemProfile/orgUnitSide.js' + fetchAssignedOrgUnitCounts, + getCountableSources, +} from './api/dataItemProfile/assignedOrgUnitCounts.js' +export { fetchOrgUnitCoverage } from './api/dataItemProfile/fetchOrgUnitCoverage.js' // Modules: response diff --git a/src/modules/dataItemProfile/__tests__/expressionItems.spec.js b/src/modules/dataItemProfile/__tests__/expressionOperands.spec.js similarity index 85% rename from src/modules/dataItemProfile/__tests__/expressionItems.spec.js rename to src/modules/dataItemProfile/__tests__/expressionOperands.spec.js index d46a58d8b..7c29b29ce 100644 --- a/src/modules/dataItemProfile/__tests__/expressionItems.spec.js +++ b/src/modules/dataItemProfile/__tests__/expressionOperands.spec.js @@ -1,7 +1,7 @@ -import { getExpressionItems } from '../expressionItems.js' +import { parseExpressionOperands } from '../expressionOperands.js' const summarize = (expression) => - getExpressionItems(expression).map( + parseExpressionOperands(expression).map( ({ type, id, operand, aggregationType }) => ({ type, ...(id !== undefined && { id }), @@ -10,7 +10,7 @@ const summarize = (expression) => }) ) -describe('getExpressionItems', () => { +describe('parseExpressionOperands', () => { it.each([ ['#{deA}', [{ type: 'DATA_ELEMENT', id: 'deA' }]], [ @@ -50,7 +50,7 @@ describe('getExpressionItems', () => { }) it('reads the functions chained after an operand', () => { - const [operand] = getExpressionItems( + const [operand] = parseExpressionOperands( '#{deA}.periodOffset(-1).aggregationType( LAST )' ) @@ -62,8 +62,8 @@ describe('getExpressionItems', () => { }) it('reads nothing from an empty expression', () => { - expect(getExpressionItems()).toEqual([]) - expect(getExpressionItems(null)).toEqual([]) - expect(getExpressionItems('1 + 2')).toEqual([]) + expect(parseExpressionOperands()).toEqual([]) + expect(parseExpressionOperands(null)).toEqual([]) + expect(parseExpressionOperands('1 + 2')).toEqual([]) }) }) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js index b8dae476b..df3676355 100644 --- a/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js @@ -1,8 +1,6 @@ import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' -import { - getDataItemProfile, - getPeriodAggregationType, -} from '../getDataItemProfile.js' +import { getDataItemProfile } from '../getDataItemProfile.js' +import { getPeriodAggregationType } from '../profile/collectSources.js' const dataElement = (periodTypes, aggregationType = 'SUM') => ({ aggregationType, @@ -86,10 +84,10 @@ describe('getDataItemProfile', () => { reportingRate: false, }, ], - period: { + assignedPeriodTypes: { types: ['Monthly'], - finest: 'Monthly', - mixed: false, + shortestDirectType: 'Monthly', + hasSeveral: false, }, }) }) @@ -126,7 +124,9 @@ describe('getDataItemProfile', () => { it('reads an operand by its data element, and keeps it', () => { const operand = profile('monthly.cocA', 'DATA_ELEMENT_OPERAND') - expect(operand.period.finest).toBe('Monthly') + expect(operand.assignedPeriodTypes.shortestDirectType).toBe( + 'Monthly' + ) expect(operand.sources[0].elements).toEqual([ expect.objectContaining({ id: 'monthly', @@ -135,12 +135,12 @@ describe('getDataItemProfile', () => { ]) }) - it('lists mixed types, and the finest is the longest', () => { + it('lists several types, and the shortest direct type is the longest', () => { expect(profile('weeklyAndMonthly', 'DATA_ELEMENT')).toMatchObject({ - period: { + assignedPeriodTypes: { types: ['Weekly', 'Monthly'], - finest: 'Monthly', - mixed: true, + shortestDirectType: 'Monthly', + hasSeveral: true, }, }) }) @@ -148,10 +148,10 @@ describe('getDataItemProfile', () => { it('goes up a type when two types have the same length', () => { expect(profile('mondayAndWednesday', 'DATA_ELEMENT')).toMatchObject( { - period: { + assignedPeriodTypes: { types: ['Weekly', 'WeeklyWednesday'], - finest: 'BiWeekly', - mixed: true, + shortestDirectType: 'BiWeekly', + hasSeveral: true, }, } ) @@ -161,12 +161,12 @@ describe('getDataItemProfile', () => { ['population', 'AVERAGE', 'Yearly'], ['stock', 'AVERAGE', 'Monthly'], ])( - 'counts averaged data in the finest type: %s', - (id, periodAggregationType, finest) => { + 'counts averaged data in the shortest direct type: %s', + (id, periodAggregationType, shortestDirectType) => { expect(profile(id, 'DATA_ELEMENT')).toMatchObject({ unknown: false, sources: [{ elements: [{ periodAggregationType }] }], - period: { finest }, + assignedPeriodTypes: { shortestDirectType }, }) } ) @@ -188,7 +188,7 @@ describe('getDataItemProfile', () => { elements: [{ id: 'noDataSet' }], }, ], - period: { types: [], finest: null }, + assignedPeriodTypes: { types: [], shortestDirectType: null }, }) }) @@ -202,7 +202,7 @@ describe('getDataItemProfile', () => { periodType: 'Hourly', }, ], - period: { types: [] }, + assignedPeriodTypes: { types: [] }, }) }) @@ -226,7 +226,10 @@ describe('getDataItemProfile', () => { reportingRate: true, }, ], - period: { types: ['Weekly'], finest: 'Weekly' }, + assignedPeriodTypes: { + types: ['Weekly'], + shortestDirectType: 'Weekly', + }, }) }) @@ -239,7 +242,10 @@ describe('getDataItemProfile', () => { it('are unknown with a period type it does not know', () => { expect( profile('oddForm.REPORTING_RATE', 'REPORTING_RATE') - ).toMatchObject({ unknown: true, period: { types: [] } }) + ).toMatchObject({ + unknown: true, + assignedPeriodTypes: { types: [] }, + }) }) }) @@ -247,10 +253,10 @@ describe('getDataItemProfile', () => { it('read numerator and denominator', () => { // The yearly population is measured directly by year only expect(profile('coverage', 'INDICATOR')).toMatchObject({ - period: { + assignedPeriodTypes: { types: ['Monthly', 'Yearly'], - finest: 'Yearly', - mixed: true, + shortestDirectType: 'Yearly', + hasSeveral: true, }, }) }) @@ -298,18 +304,24 @@ describe('getDataItemProfile', () => { it('mix the types of their data elements', () => { expect(profile('weeklyShare', 'INDICATOR')).toMatchObject({ - period: { finest: 'Monthly', mixed: true }, + assignedPeriodTypes: { + shortestDirectType: 'Monthly', + hasSeveral: true, + }, }) }) it('read nested indicators', () => { - expect(profile('nested', 'INDICATOR').period.finest).toBe('Yearly') + expect( + profile('nested', 'INDICATOR').assignedPeriodTypes + .shortestDirectType + ).toBe('Yearly') }) it('read indicators that refer to each other once', () => { expect(profile('loopA', 'INDICATOR')).toMatchObject({ unknown: false, - period: { finest: 'Weekly' }, + assignedPeriodTypes: { shortestDirectType: 'Weekly' }, }) }) @@ -325,20 +337,21 @@ describe('getDataItemProfile', () => { ], }, ], - period: { finest: 'Yearly' }, + assignedPeriodTypes: { shortestDirectType: 'Yearly' }, }) }) it('take a reporting rate operand', () => { - expect(profile('reportingRate', 'INDICATOR').period.finest).toBe( - 'Weekly' - ) + expect( + profile('reportingRate', 'INDICATOR').assignedPeriodTypes + .shortestDirectType + ).toBe('Weekly') }) it('are not limited by event data, constants or days', () => { expect(profile('eventsOnly', 'INDICATOR')).toMatchObject({ unknown: false, - period: { types: [], finest: null }, + assignedPeriodTypes: { types: [], shortestDirectType: null }, }) }) @@ -371,7 +384,12 @@ describe('getDataItemProfile', () => { it('read their expression', () => { expect( profile('weeklyPlusMonthly', 'EXPRESSION_DIMENSION_ITEM') - ).toMatchObject({ period: { finest: 'Monthly', mixed: true } }) + ).toMatchObject({ + assignedPeriodTypes: { + shortestDirectType: 'Monthly', + hasSeveral: true, + }, + }) }) it('are unknown without metadata', () => { @@ -394,7 +412,10 @@ describe('getDataItemProfile', () => { expect(profile(id, type)).toMatchObject({ unknown: false, sources: [{ program: { id: 'pr' } }], - period: { types: [], finest: null }, + assignedPeriodTypes: { + types: [], + shortestDirectType: null, + }, }) } ) @@ -419,9 +440,10 @@ describe('getDataItemProfile', () => { ]) }) - it('has no source without a program in its id', () => { + it('is unknown without a program in its id', () => { expect(profile('de', 'EVENT_DATA_ITEM')).toMatchObject({ - unknown: false, + unknown: true, + reasons: [{ code: 'MISSING_PROGRAM', id: 'de' }], sources: [], }) }) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js index 5aac225d0..88add0923 100644 --- a/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js @@ -64,12 +64,12 @@ describe('getDataItemProfileCompatibility', () => { it('gives results per period, per source and overall', () => { expect(compatibilityOf('monthly', ['2025W2', '202501'])).toEqual({ status: 'none', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], sources: [ { - dataSetId: 'MonthlyForm', + sourceId: 'MonthlyForm', status: 'none', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], }, ], periods: [ @@ -77,13 +77,13 @@ describe('getDataItemProfileCompatibility', () => { id: '2025W2', periodTypes: ['Weekly'], status: 'none', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], alignsWithData: null, sources: [ { - dataSetId: 'MonthlyForm', + sourceId: 'MonthlyForm', status: 'none', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], }, ], }, @@ -95,7 +95,7 @@ describe('getDataItemProfileCompatibility', () => { alignsWithData: true, sources: [ { - dataSetId: 'MonthlyForm', + sourceId: 'MonthlyForm', status: 'full', reasons: [], }, @@ -109,25 +109,31 @@ describe('getDataItemProfileCompatibility', () => { expect(getDataItemProfileCompatibility(profileOf('monthly'))).toEqual({ status: null, reasons: [], - sources: [{ dataSetId: 'MonthlyForm', status: null, reasons: [] }], + sources: [{ sourceId: 'MonthlyForm', status: null, reasons: [] }], periods: [], }) }) it('takes period types', () => { expect(outcomeOf('monthly', ['Quarterly'])).toEqual(full()) - expect(outcomeOf('monthly', ['Daily'])).toEqual(none(['SHORTER'])) + expect(outcomeOf('monthly', ['Daily'])).toEqual( + none(['PERIOD_TOO_SHORT']) + ) }) it('gives nothing for another type of the same length', () => { - expect(outcomeOf('wednesday', ['2025W2'])).toEqual(none(['OTHER_TYPE'])) - expect(outcomeOf('yearly', ['2025April'])).toEqual(none(['OTHER_TYPE'])) + expect(outcomeOf('wednesday', ['2025W2'])).toEqual( + none(['PERIOD_TYPE_MISMATCH']) + ) + expect(outcomeOf('yearly', ['2025April'])).toEqual( + none(['PERIOD_TYPE_MISMATCH']) + ) }) describe('values not measured for the period', () => { it('are averaged for averaged data in shorter periods', () => { expect(outcomeOf('population', ['202501'])).toEqual( - full(['AVERAGED']) + full(['REPEATED_VALUE']) ) expect(outcomeOf('population', ['2025'])).toEqual(full()) }) @@ -136,14 +142,14 @@ describe('getDataItemProfileCompatibility', () => { it('LAST carries the latest data period of the years touched', () => { // June's value, for a day in July expect(outcomeOf('stock', ['20250715'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) // December 2024 is outside the years 1 January 2025 touches expect(outcomeOf('stock', ['20250101'])).toEqual( - none(['NOTHING_TO_CARRY']) + none(['NO_EARLIER_PERIOD_VALUE']) ) expect(outcomeOf('stock', ['2025WedW1'])).toEqual( - none(['NOTHING_TO_CARRY']) + none(['NO_EARLIER_PERIOD_VALUE']) ) }) @@ -155,18 +161,18 @@ describe('getDataItemProfileCompatibility', () => { it('FIRST takes the earliest data period of the years touched', () => { // January's value, for July and for the third quarter expect(outcomeOf('firstMonthly', ['202507'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) expect(outcomeOf('firstMonthly', ['2025Q3'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) expect(outcomeOf('firstMonthly', ['2025'])).toEqual(full()) expect(outcomeOf('firstMonthly', ['20250101'])).toEqual( - none(['NOTHING_TO_CARRY']) + none(['NO_EARLIER_PERIOD_VALUE']) ) // 1 January's value, not the day's own expect(outcomeOf('firstDaily', ['20250715'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) expect(outcomeOf('firstDaily', ['20250101'])).toEqual(full()) expect(outcomeOf('firstDaily', ['2025WedW1'])).toEqual(full()) @@ -176,39 +182,41 @@ describe('getDataItemProfileCompatibility', () => { // With 2024 in the request, December 2024 counts on 1 January const withYear = compatibilityOf('stock', ['20250101', '2024']) - expect(withYear.periods[0]).toMatchObject(full(['CARRIED'])) + expect(withYear.periods[0]).toMatchObject( + full(['EARLIER_PERIOD_VALUE']) + ) }) it('read the year in a data period id', () => { // 2024April (April 2024 to March 2025) is a 2024 period expect(outcomeOf('lastFinancialApril', ['20250715'])).toEqual( - none(['NOTHING_TO_CARRY']) + none(['NO_EARLIER_PERIOD_VALUE']) ) // …but it counts when the request touches 2024 expect( compatibilityOf('lastFinancialApril', ['20250715', '2024']) .periods[0] - ).toMatchObject(full(['CARRIED'])) + ).toMatchObject(full(['EARLIER_PERIOD_VALUE'])) }) it('may carry when the selection has no dates', () => { expect(outcomeOf('stock', ['Weekly'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) expect(outcomeOf('stock', ['LAST_12_MONTHS'])).toEqual(full()) // FIRST gives January's value to every month of the year expect(outcomeOf('firstMonthly', ['LAST_12_MONTHS'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) expect( compatibilityOf('stock', ['20250101', 'LAST_12_MONTHS']) .periods[0] - ).toMatchObject(full(['CARRIED'])) + ).toMatchObject(full(['EARLIER_PERIOD_VALUE'])) }) it('may carry when the data type has no dates', () => { expect(outcomeOf('lastTwoYearly', ['2025'])).toEqual( - full(['CARRIED']) + full(['EARLIER_PERIOD_VALUE']) ) }) }) @@ -216,9 +224,9 @@ describe('getDataItemProfileCompatibility', () => { it('show in each source', () => { expect(compatibilityOf('stock', ['20250715']).sources).toEqual([ { - dataSetId: 'MonthlyForm', + sourceId: 'MonthlyForm', status: 'full', - reasons: ['CARRIED'], + reasons: ['EARLIER_PERIOD_VALUE'], }, ]) }) @@ -227,17 +235,17 @@ describe('getDataItemProfileCompatibility', () => { describe('expressions', () => { it('are complete with an averaged denominator, which they report', () => { expect(outcomeOf(indicator('coverage'), ['202501'])).toEqual( - full(['AVERAGED']) + full(['REPEATED_VALUE']) ) expect(outcomeOf(indicator('coverage'), ['2025'])).toEqual(full()) }) it('are empty when one operand gives nothing, and say so', () => { expect(outcomeOf(indicator('coverage'), ['2025W2'])).toEqual( - none(['OPERAND_EMPTY', 'SHORTER', 'AVERAGED']) + none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT', 'REPEATED_VALUE']) ) expect(outcomeOf(indicator('share'), ['2025W2'])).toEqual( - none(['OPERAND_EMPTY', 'SHORTER']) + none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT']) ) }) @@ -246,19 +254,19 @@ describe('getDataItemProfileCompatibility', () => { outcomeOf(indicator('weeklyShareOfMonthly'), ['2025W2']) ).toEqual({ status: 'partial', - reasons: ['OPERAND_PARTIAL', 'OTHER_TYPE'], + reasons: ['OPERAND_PARTIAL', 'PERIOD_TYPE_MISMATCH'], }) }) it('say nothing more with one operand', () => { expect(outcomeOf(indicator('timesTwelve'), ['2025W2'])).toEqual( - none(['SHORTER']) + none(['PERIOD_TOO_SHORT']) ) }) it('report every kind of indirect value', () => { expect(outcomeOf(indicator('stockPerHead'), ['20250715'])).toEqual( - full(['AVERAGED', 'CARRIED']) + full(['REPEATED_VALUE', 'EARLIER_PERIOD_VALUE']) ) }) }) @@ -287,25 +295,25 @@ describe('getDataItemProfileCompatibility', () => { }) ).toMatchObject({ status: 'partial', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], sources: [ - { dataSetId: 'surveillance', status: 'full' }, - { dataSetId: 'report', status: 'none' }, + { sourceId: 'surveillance', status: 'full' }, + { sourceId: 'report', status: 'none' }, ], periods: [ { status: 'partial', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], sources: [ { - dataSetId: 'surveillance', + sourceId: 'surveillance', status: 'full', reasons: [], }, { - dataSetId: 'report', + sourceId: 'report', status: 'none', - reasons: ['SHORTER'], + reasons: ['PERIOD_TOO_SHORT'], }, ], }, @@ -319,7 +327,7 @@ describe('getDataItemProfileCompatibility', () => { getDataItemProfileCompatibility(malaria('AVERAGE'), { periods: ['2025W2'], }) - ).toMatchObject(full(['AVERAGED'])) + ).toMatchObject(full(['REPEATED_VALUE'])) }) it('is empty when every data set gives nothing', () => { @@ -327,7 +335,7 @@ describe('getDataItemProfileCompatibility', () => { getDataItemProfileCompatibility(malaria('SUM'), { periods: ['20250115'], }) - ).toMatchObject(none(['SHORTER'])) + ).toMatchObject(none(['PERIOD_TOO_SHORT'])) }) }) @@ -340,14 +348,46 @@ describe('getDataItemProfileCompatibility', () => { expect( getDataItemProfileCompatibility(profile, { periods: ['2025W2'] }) ).toMatchObject({ - ...none(['REPORTING_RATE']), - sources: [{ dataSetId: 'form', ...none(['REPORTING_RATE']) }], + ...none(['REPORTING_RATE_TOO_SHORT']), + sources: [ + { sourceId: 'form', ...none(['REPORTING_RATE_TOO_SHORT']) }, + ], }) expect( getDataItemProfileCompatibility(profile, { periods: ['2025Q1'] }) ).toMatchObject(full()) }) + describe('a program indicator without period boundaries', () => { + const profile = getDataItemProfile( + { id: 'pi', dimensionItemType: 'PROGRAM_INDICATOR' }, + { + programIndicators: { + pi: { program: 'pr', hasPeriodBoundaries: false }, + }, + programs: { pr: {} }, + } + ) + const judge = (serverVersion) => + getDataItemProfileCompatibility( + profile, + { periods: ['2025Q1'] }, + { serverVersion } + ) + + it('is unknown before 2.43, which can’t query it', () => { + expect(judge({ major: 2, minor: 42 })).toMatchObject({ + status: 'unknown', + reasons: ['UNSUPPORTED_VERSION'], + }) + }) + + it('is full from 2.43, or without a server version', () => { + expect(judge({ major: 2, minor: 43 })).toMatchObject(full()) + expect(judge()).toMatchObject(full()) + }) + }) + it('is full for event data, placed by its own dates', () => { const profile = getDataItemProfile( { id: 'pi', dimensionItemType: 'PROGRAM_INDICATOR' }, @@ -361,7 +401,7 @@ describe('getDataItemProfileCompatibility', () => { getDataItemProfileCompatibility(profile, { periods: ['20250115'] }) ).toMatchObject({ ...full(), - sources: [{ dataSetId: null, status: 'full', reasons: [] }], + sources: [{ sourceId: 'pr', status: 'full', reasons: [] }], }) }) @@ -386,7 +426,7 @@ describe('getDataItemProfileCompatibility', () => { ).toMatchObject({ ...unknown(['PROFILE_UNKNOWN']), sources: [ - { dataSetId: 'hourly', ...unknown(['PROFILE_UNKNOWN']) }, + { sourceId: 'hourly', ...unknown(['PROFILE_UNKNOWN']) }, ], }) expect(outcomeOf('missing', ['202501'])).toEqual( @@ -418,7 +458,7 @@ describe('getDataItemProfileCompatibility', () => { unknown(['UNKNOWN_PERIOD']) ) expect(outcomeOf('monthly', ['NEXT_CENTURY', '2025W2'])).toEqual( - none(['SHORTER', 'UNKNOWN_PERIOD']) + none(['PERIOD_TOO_SHORT', 'UNKNOWN_PERIOD']) ) }) @@ -426,20 +466,20 @@ describe('getDataItemProfileCompatibility', () => { it('read their type', () => { expect(outcomeOf('monthly', ['LAST_12_MONTHS'])).toEqual(full()) expect(outcomeOf('monthly', ['LAST_7_DAYS'])).toEqual( - none(['SHORTER']) + none(['PERIOD_TOO_SHORT']) ) }) it('hold when every type they could be agrees', () => { expect(outcomeOf('monthly', ['LAST_4_WEEKS'])).toEqual( - none(['SHORTER']) + none(['PERIOD_TOO_SHORT']) ) expect(outcomeOf('monthly', ['THIS_FINANCIAL_YEAR'])).toEqual( full() ) // Yearly data gives nothing in any financial year expect(outcomeOf('yearly', ['THIS_FINANCIAL_YEAR'])).toEqual( - none(['OTHER_TYPE']) + none(['PERIOD_TYPE_MISMATCH']) ) }) @@ -462,7 +502,7 @@ describe('getDataItemProfileCompatibility', () => { outcomeOf('weekly', ['LAST_4_WEEKS'], { weeklyPeriodType: 'WeeklySunday', }) - ).toEqual(none(['OTHER_TYPE'])) + ).toEqual(none(['PERIOD_TYPE_MISMATCH'])) expect( outcomeOf('financialOct', ['THIS_FINANCIAL_YEAR'], { financialYearPeriodType: 'FinancialOct', diff --git a/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js new file mode 100644 index 000000000..f3507de4a --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js @@ -0,0 +1,298 @@ +import fs from 'fs' +import path from 'path' +import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' +import { getCountableSources } from '../../../api/dataItemProfile/assignedOrgUnitCounts.js' +import { fetchOrgUnitCoverage } from '../../../api/dataItemProfile/fetchOrgUnitCoverage.js' +import { normalizeDataItemProfileMetadata } from '../../../api/dataItemProfile/metadataQueries.js' +import { getDataItemProfileOrgUnitCompatibility } from '../compatibility/getDataItemProfileOrgUnitCompatibility.js' +import { getDataItemProfile } from '../getDataItemProfile.js' + +/* The fixtures come from the test tool in dhis2/maps-tools + * (test-data-period-types, org unit groups): analytics' answers on 2.40 to + * 2.44 for data sets and programs assigned at different levels, on the + * tool's own org units. Each case is rebuilt here: its hierarchy and + * assignments become a fake server, and the library judges the selection + * from metadata as it would on a real one. */ +const FIXTURES_DIR = path.join(__dirname, '../../../__fixtures__/org-units') + +const readFixture = (name) => + JSON.parse(fs.readFileSync(path.join(FIXTURES_DIR, `${name}.json`))) + +const CASE_GROUPS = [ + 'entered-above', + 'partly-assigned', + 'mixed-levels', + 'aggregation-levels', + 'org-unit-groups', + 'user-org-units', + 'programs', +] + +/* Where the tool's prediction differs from the library's on purpose (the + * analytics answers agree with both) */ +const PREDICTION_DIFFERENCES = { + // One operand: the library gives the element's reason, OPERAND_PARTIAL is for expressions of several + 'ou-mixed-indicator__F1': { + status: 'partial', + reasons: ['ASSIGNED_AT_HIGHER_LEVEL'], + }, +} + +// The tool's reason names, before the library renamed them +const REASON_BY_TOOL_NAME = { + BELOW_COLLECTION: 'ASSIGNED_AT_HIGHER_LEVEL', + AGGREGATION_LEVEL: 'STOPPED_BY_AGGREGATION_LEVEL', + ORG_UNIT_FIELD: 'ANY_ORG_UNIT', +} + +// Ids the library reads as org unit uids (11 characters) +const toUid = (prefix, key) => `${prefix}${key}xxxxxxxxxxx`.slice(0, 11) +const orgUnitUid = (key) => toUid('orgUnit', key) +const groupUid = (key) => toUid('groupOf', key) +const sourceUid = (name) => + toUid('src', name.replace(/[^a-zA-Z0-9]/g, '').slice(-8)) + +// The tool's root region sits under a level 1 org unit, as on the server +const ROOT = 'root' + +const getPath = (key, orgUnits) => + key === ROOT + ? `/${orgUnitUid(ROOT)}` + : `${getPath(orgUnits[key].parent ?? ROOT, orgUnits)}/${orgUnitUid( + key + )}` + +const getSources = ({ collectionSources = [], operands = [] }) => [ + ...collectionSources, + ...operands.flatMap(getSources), +] + +const createServer = (hierarchy, item) => { + const sources = getSources(item) + const assignedTo = (key, field) => + sources + .filter((source) => source[field] && source.orgUnits.includes(key)) + .map((source) => sourceUid(source[field])) + const orgUnits = Object.entries({ + [ROOT]: { level: 1 }, + ...hierarchy.orgUnits, + }).map(([key, { level }]) => ({ + id: orgUnitUid(key), + level, + path: getPath(key, hierarchy.orgUnits), + dataSets: assignedTo(key, 'dataSet'), + programs: assignedTo(key, 'program'), + })) + const groups = Object.fromEntries( + Object.entries(hierarchy.groups).map(([key, members]) => [ + groupUid(key), + members.map(orgUnitUid), + ]) + ) + const userOrgUnits = [orgUnitUid('region')] + + return createFakeOrgUnitServer({ + orgUnits, + groups, + user: { + organisationUnits: userOrgUnits, + dataViewOrganisationUnits: userOrgUnits, + }, + }) +} + +const toDataElement = ({ aggregationType = 'SUM', collectionSources }) => ({ + aggregationType, + ...(collectionSources.find(({ aggregationLevels }) => aggregationLevels) + ?.aggregationLevels && { + aggregationLevels: collectionSources.find( + ({ aggregationLevels }) => aggregationLevels + ).aggregationLevels, + }), + dataSetElements: collectionSources.map(({ dataSet, periodType }) => ({ + dataSet: { id: sourceUid(dataSet), periodType }, + })), +}) + +// An org unit data element's id, for a program indicator placed by one +const ORG_UNIT_DATA_ELEMENT = 'orgUnitDeAA' + +// The metadata the library would fetch for the case's item +const getMetadata = (itemId, item) => { + const [source] = item.collectionSources ?? [] + + switch (item.dimensionItemType) { + case 'INDICATOR': + return normalizeDataItemProfileMetadata({ + indicators: [ + { + id: itemId, + numerator: item.numerator, + denominator: item.denominator, + }, + ], + dataElements: item.operands.map((operand) => ({ + id: operand.id, + ...toDataElement(operand), + })), + }) + case 'PROGRAM_INDICATOR': + return normalizeDataItemProfileMetadata({ + programIndicators: [ + { + id: itemId, + program: { id: sourceUid(source.program) }, + orgUnitField: + source.orgUnitField === 'DATA_ELEMENT' + ? ORG_UNIT_DATA_ELEMENT + : source.orgUnitField, + }, + ], + programs: [{ id: sourceUid(source.program) }], + }) + default: + return normalizeDataItemProfileMetadata({ + dataElements: [{ id: itemId, ...toDataElement(item) }], + }) + } +} + +const toSelectionItem = (key, hierarchy) => { + if (hierarchy.orgUnits[key]) { + return orgUnitUid(key) + } + + return key.startsWith('OU_GROUP-') + ? `OU_GROUP-${groupUid(key.slice('OU_GROUP-'.length))}` + : key +} + +const judgeCase = async (hierarchy, { item, query }) => { + const itemId = 'itemUnderTe' + const profile = getDataItemProfile( + { id: itemId, dimensionItemType: item.dimensionItemType }, + getMetadata(itemId, item) + ) + const orgUnits = query.orgUnits.map((key) => + toSelectionItem(key, hierarchy) + ) + const coverage = await fetchOrgUnitCoverage( + createServer(hierarchy, item).createEngine(), + { sources: getCountableSources([profile]), orgUnits } + ) + + return getDataItemProfileOrgUnitCompatibility(profile, { + orgUnits, + coverage, + })[0] +} + +const getExpected = ({ id, expected, observed }) => { + if (PREDICTION_DIFFERENCES[id]) { + return PREDICTION_DIFFERENCES[id] + } + + const isRefused = Object.values(observed).every(({ error }) => + error?.startsWith('E7143') + ) + + return isRefused + ? { status: 'none', reasons: ['EMPTY_GROUP'] } + : { + status: expected.compatibility, + reasons: expected.reasons.map( + (reason) => REASON_BY_TOOL_NAME[reason] ?? reason + ), + } +} + +/* What analytics must have returned on every version for the library's + * status: none, nothing (or the refusal of an empty group); otherwise, never + * an error. A full result says nothing is left out, not that there is data: + * a program with no event in an org unit gives nothing there. */ +const agreesWithAnalytics = ({ status, reasons }, observed) => + Object.values(observed).every((answer) => { + if (reasons.includes('EMPTY_GROUP')) { + return answer.status === 'ERROR' + } + + return status === 'none' + ? answer.status === 'EMPTY' + : answer.status !== 'ERROR' + }) + +describe('org unit fixtures', () => { + describe.each(CASE_GROUPS)('%s', (group) => { + const { hierarchy, cases } = readFixture(group) + + it.each(cases.map((fixtureCase) => [fixtureCase.id, fixtureCase]))( + '%s: the library judges as the tool expects, and as analytics answered', + async (_, fixtureCase) => { + const result = await judgeCase(hierarchy, fixtureCase) + + /* PARTLY_ASSIGNED is informational: the tool leaves it out + * where the org unit has other children at that level */ + expect({ + status: result.status, + reasons: result.reasons.filter( + (reason) => + reason !== 'PARTLY_ASSIGNED' || + fixtureCase.expected.reasons?.includes(reason) + ), + }).toEqual(getExpected(fixtureCase)) + expect(agreesWithAnalytics(result, fixtureCase.observed)).toBe( + true + ) + } + ) + }) + + describe('the metadata requests, as each version answered them', () => { + const { findings } = readFixture('org-unit-requests') + + describe.each(Object.entries(findings))( + '%s', + (_, { metadataShapes }) => { + const responseOf = (name) => + metadataShapes.find((shape) => shape.name === name).response + + it('give data elements their aggregation levels', () => { + const { dataElements } = normalizeDataItemProfileMetadata({ + dataElements: responseOf( + 'dataElements-aggregationLevels' + ), + }) + + expect( + Object.values(dataElements).map( + ({ aggregationLevels }) => aggregationLevels + ) + ).toContainEqual([2, 3]) + }) + + it('give program indicators their program and orgUnitField', () => { + const { programIndicators } = + normalizeDataItemProfileMetadata({ + programIndicators: responseOf('programIndicators'), + }) + const indicators = Object.values(programIndicators) + + expect(indicators.every(({ program }) => program)).toBe( + true + ) + expect( + indicators.map(({ orgUnitField }) => orgUnitField) + ).toEqual( + expect.arrayContaining(['REGISTRATION', 'OWNER_AT_END']) + ) + }) + + it('give the user data view org units', () => { + expect( + responseOf('me-ptt-user').dataViewOrganisationUnits + ).toHaveLength(1) + }) + } + ) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js deleted file mode 100644 index 22204f288..000000000 --- a/src/modules/dataItemProfile/__tests__/orgUnitSelection.spec.js +++ /dev/null @@ -1,160 +0,0 @@ -import { - getOrgUnitTargets, - getUnitsToCount, - parseOrgUnitItem, - readOrgUnitSelection, -} from '../orgUnitSelection.js' - -describe('parseOrgUnitItem', () => { - it.each([ - ['ImspTQPwCqd', { kind: 'UNIT' }], - ['LEVEL-2', { kind: 'LEVEL', level: 2 }], - ['LEVEL-wjP19dkFeIk', { kind: 'LEVEL', level: 'wjP19dkFeIk' }], - ['OU_GROUP-RXL3lPSK8oG', { kind: 'GROUP', group: 'RXL3lPSK8oG' }], - ['USER_ORGUNIT', { kind: 'USER', depth: 0 }], - ['USER_ORGUNIT_CHILDREN', { kind: 'USER', depth: 1 }], - ['USER_ORGUNIT_GRANDCHILDREN', { kind: 'USER', depth: 2 }], - ['not an id', { kind: 'UNKNOWN' }], - ])('reads %s', (id, expected) => { - expect(parseOrgUnitItem(id)).toEqual({ id, ...expected }) - }) -}) - -describe('readOrgUnitSelection', () => { - it('judges units on their own', () => { - expect(readOrgUnitSelection(['unitAAAAAAA', 'unitBBBBBBB'])).toEqual({ - items: [ - { id: 'unitAAAAAAA', kind: 'UNIT' }, - { id: 'unitBBBBBBB', kind: 'UNIT' }, - ], - boundaries: [], - }) - }) - - it('takes the units as boundaries of a level or a group', () => { - expect( - readOrgUnitSelection(['unitAAAAAAA', 'LEVEL-3', 'USER_ORGUNIT']) - ).toEqual({ - items: [ - { id: 'LEVEL-3', kind: 'LEVEL', level: 3 }, - { id: 'USER_ORGUNIT', kind: 'USER', depth: 0 }, - ], - boundaries: ['unitAAAAAAA'], - }) - }) - - it('reads nothing from no selection', () => { - expect(readOrgUnitSelection()).toEqual({ items: [], boundaries: [] }) - }) -}) - -describe('getUnitsToCount', () => { - it('counts the units of a selection', () => { - expect(getUnitsToCount(['unitAAAAAAA', 'LEVEL-2'])).toEqual({ - unitIds: ['unitAAAAAAA'], - needsRoots: false, - needsUser: false, - groupIds: [], - }) - }) - - it('counts the roots for a level alone, and the user units', () => { - expect(getUnitsToCount(['LEVEL-2', 'USER_ORGUNIT_CHILDREN'])).toEqual({ - unitIds: [], - needsRoots: true, - needsUser: true, - groupIds: [], - }) - expect(getUnitsToCount()).toEqual({ - unitIds: [], - needsRoots: false, - needsUser: false, - groupIds: [], - }) - }) - - it('lists the groups once each, with no roots for them', () => { - expect( - getUnitsToCount(['OU_GROUP-groupAAAAAA', 'OU_GROUP-groupAAAAAA']) - ).toEqual({ - unitIds: [], - needsRoots: false, - needsUser: false, - groupIds: ['groupAAAAAA'], - }) - }) -}) - -describe('getOrgUnitTargets', () => { - const COVERAGE = { - levels: [ - { id: 'levelNation', level: 1 }, - { id: 'levelDistri', level: 2 }, - ], - units: { - nation: { id: 'nation', level: 1 }, - district: { id: 'district', level: 2 }, - facility: { id: 'facility', level: 4 }, - }, - roots: ['nation'], - userUnits: ['district'], - groups: { groupAAAAAA: { 2: 3, 3: 0, 4: 5 } }, - } - const targets = (id, boundaries = [], coverage = COVERAGE) => - getOrgUnitTargets(parseOrgUnitItem(id), boundaries, coverage) - - it('asks a unit at its own level', () => { - expect(targets('district')).toBeNull() - expect( - getOrgUnitTargets({ id: 'district', kind: 'UNIT' }, [], COVERAGE) - ).toEqual([{ unitId: 'district', level: 2 }]) - }) - - it('asks a level under each boundary that is above it', () => { - expect(targets('LEVEL-3', ['nation', 'facility'])).toEqual([ - { unitId: 'nation', level: 3 }, - ]) - }) - - it('asks a level under the roots without boundaries, by number or id', () => { - expect(targets('LEVEL-levelDistri')).toEqual([ - { unitId: 'nation', level: 2 }, - ]) - }) - - it('asks the user units at their level plus the depth', () => { - expect(targets('USER_ORGUNIT_GRANDCHILDREN')).toEqual([ - { unitId: 'district', level: 4 }, - ]) - }) - - it('asks a group at each level its members are at', () => { - expect(targets('OU_GROUP-groupAAAAAA')).toEqual([ - { key: 'groupAAAAAA:2:', level: 2, group: 'groupAAAAAA' }, - { key: 'groupAAAAAA:4:', level: 4, group: 'groupAAAAAA' }, - ]) - }) - - it('asks a group under each boundary at or above its members', () => { - expect( - targets('OU_GROUP-groupAAAAAA', ['district', 'facility']) - ).toEqual([ - { key: 'groupAAAAAA:2:district', level: 2, group: 'groupAAAAAA' }, - { key: 'groupAAAAAA:4:district', level: 4, group: 'groupAAAAAA' }, - { key: 'groupAAAAAA:4:facility', level: 4, group: 'groupAAAAAA' }, - ]) - }) - - it('cannot tell for a group, an unknown level, or units not loaded', () => { - expect(targets('OU_GROUP-notLoadedGr')).toBeNull() - expect(targets('OU_GROUP-groupAAAAAA', ['notLoadedUn'])).toBeNull() - expect(targets('LEVEL-unknownLvl')).toBeNull() - expect(targets('LEVEL-3', ['notLoadedUn'])).toBeNull() - expect( - targets('USER_ORGUNIT', [], { ...COVERAGE, userUnits: null }) - ).toBeNull() - expect( - targets('USER_ORGUNIT', [], { ...COVERAGE, userUnits: ['other'] }) - ).toBeNull() - }) -}) diff --git a/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js deleted file mode 100644 index 6417cd8fb..000000000 --- a/src/modules/dataItemProfile/__tests__/orgUnitSide.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -import { getOrgUnitSide, withOrgUnitSide } from '../orgUnitSide.js' - -const source = (id, orgUnitLevels) => ({ - dataSet: id && { id, periodType: 'Monthly' }, - elements: [], - reportingRate: false, - ...(orgUnitLevels && { orgUnitLevels }), -}) - -describe('getOrgUnitSide', () => { - it('gives the levels assigned, deepest first, and the deepest', () => { - expect( - getOrgUnitSide([source('formA', { 1: 1, 2: 0, 4: 1159 })]) - ).toEqual({ levels: [4, 1], entryLevel: 4, mixed: false }) - }) - - it('is mixed when data sets are entered at different levels', () => { - expect( - getOrgUnitSide([ - source('formA', { 4: 10 }), - source('formB', { 2: 3 }), - ]) - ).toEqual({ levels: [4, 2], entryLevel: 4, mixed: true }) - }) - - it('has no level without assignments', () => { - expect(getOrgUnitSide([source('formA', {}), source(null)])).toEqual({ - levels: [], - entryLevel: null, - mixed: false, - }) - }) -}) - -describe('withOrgUnitSide', () => { - it('gives each source its levels, and the profile its org unit side', () => { - const profile = { - sources: [source('formA'), source(null)], - unknown: false, - reasons: [], - period: { types: ['Monthly'] }, - } - - expect(withOrgUnitSide(profile, { formA: { 4: 2 } })).toEqual({ - ...profile, - sources: [source('formA', { 4: 2 }), source(null)], - orgUnit: { levels: [4], entryLevel: 4, mixed: false }, - }) - expect(withOrgUnitSide(profile, {}).sources[0].orgUnitLevels).toEqual( - {} - ) - }) - - it('gives no levels to a program indicator placed anywhere', () => { - const placedAnywhere = { - dataSet: null, - program: { id: 'programAAA' }, - orgUnitField: 'REGISTRATION', - elements: [], - reportingRate: false, - } - - expect( - withOrgUnitSide( - { sources: [placedAnywhere] }, - { programAAA: { 4: 2 } } - ) - ).toEqual({ - sources: [placedAnywhere], - orgUnit: { levels: [], entryLevel: null, mixed: false }, - }) - }) -}) diff --git a/src/modules/dataItemProfile/__tests__/fixtures.spec.js b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js similarity index 93% rename from src/modules/dataItemProfile/__tests__/fixtures.spec.js rename to src/modules/dataItemProfile/__tests__/periodFixtures.spec.js index a301dc421..cafc7878a 100644 --- a/src/modules/dataItemProfile/__tests__/fixtures.spec.js +++ b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js @@ -1,14 +1,15 @@ import fs from 'fs' import path from 'path' import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' -import { getCarriedSource, getYearsTouched } from '../carriedValues.js' -import { - getDataItemProfile, - getPeriodAggregationType, -} from '../getDataItemProfile.js' +import { getDataItemProfile } from '../getDataItemProfile.js' import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' -import { getPeriodDates } from '../periodTypeRelations.js' -import { getPeriodTypeOfPeriodId } from '../periodTypes.js' +import { + getFirstOrLastValuePeriod, + getYearsTouched, +} from '../periods/firstLastValues.js' +import { getPeriodDates } from '../periods/periodRanges.js' +import { getPeriodTypeOfPeriodId } from '../periods/periodTypes.js' +import { getPeriodAggregationType } from '../profile/collectSources.js' /* The fixtures come from the test tool in dhis2/maps-tools * (test-data-period-types). PERIOD_TYPES_FIXTURES_DIR points the test at the @@ -59,26 +60,28 @@ const hasReportingRate = (item) => * if any. The tool calls any value at a shorter period REPEATED; the library * tells apart: * - averaged values, repeated from the data period that holds the period: - * complete, AVERAGED; - * - the value FIRST and LAST carry from an earlier data period: complete, - * CARRIED; when nothing is carried, empty, NOTHING_TO_CARRY; + * full, REPEATED_VALUE; + * - the value FIRST and LAST take from an earlier data period: full, + * EARLIER_PERIOD_VALUE; when there is none, none, NO_EARLIER_PERIOD_VALUE; * - the meaningless value a reporting rate gives (0, or the expected reports - * count for another type of the same length): empty, REPORTING_RATE. - * FIRST also carries into periods its data adds up into (January's value for - * July), which the tool calls VALUE: any reason is accepted there. */ + * count for another type of the same length): none, + * REPORTING_RATE_TOO_SHORT. + * FIRST also takes earlier values in periods its data adds up into + * (January's value for July), which the tool calls VALUE: any reason is + * accepted there. */ const toExpected = ({ item }, { status }) => { if (status === 'REPEATED') { if (hasReportingRate(item)) { - return { status: 'none', reason: 'REPORTING_RATE' } + return { status: 'none', reason: 'REPORTING_RATE_TOO_SHORT' } } return isCarrying(item) - ? { status: 'full', reason: 'CARRIED' } - : { status: 'full', reason: 'AVERAGED' } + ? { status: 'full', reason: 'EARLIER_PERIOD_VALUE' } + : { status: 'full', reason: 'REPEATED_VALUE' } } if (status === 'EMPTY' && isCarrying(item)) { - return { status: 'none', reason: 'NOTHING_TO_CARRY' } + return { status: 'none', reason: 'NO_EARLIER_PERIOD_VALUE' } } return { status: LIBRARY_STATUS[status] } @@ -123,7 +126,7 @@ const predictCarriedSource = (fixtureCase) => { return undefined } - return getCarriedSource({ + return getFirstOrLastValuePeriod({ periodAggregationType: getPeriodAggregationType(item.aggregationType), periodType: item.collectionPeriodTypes[0], dates: getPeriodDates(query.period), diff --git a/src/modules/dataItemProfile/__tests__/sources.spec.js b/src/modules/dataItemProfile/__tests__/sources.spec.js new file mode 100644 index 000000000..e07c20b35 --- /dev/null +++ b/src/modules/dataItemProfile/__tests__/sources.spec.js @@ -0,0 +1,106 @@ +import { + canBeAtAnyOrgUnit, + getAssignmentField, + getItemOperands, + getSourceId, + isProgramSource, + usesProgramOrgUnits, +} from '../sources.js' + +const dataSetSource = (id, elements = [], reportingRate = false) => ({ + dataSet: { id, periodType: 'Monthly' }, + elements, + reportingRate, +}) +const programSource = (id, extra = {}) => ({ + dataSet: null, + program: { id }, + elements: [], + reportingRate: false, + ...extra, +}) +const unassignedSource = (elements) => ({ + dataSet: null, + elements, + reportingRate: false, +}) +const element = (id, aggregationType = 'SUM') => ({ id, aggregationType }) + +describe('sources', () => { + it('tells a program from a data set or an element in no data set', () => { + expect(isProgramSource(programSource('programAAA'))).toBe(true) + expect(isProgramSource(dataSetSource('dataSetAAA'))).toBe(false) + expect(isProgramSource(unassignedSource([]))).toBe(false) + }) + + it('gives the id of the data set or program, or null', () => { + expect(getSourceId(dataSetSource('dataSetAAA'))).toBe('dataSetAAA') + expect(getSourceId(programSource('programAAA'))).toBe('programAAA') + expect(getSourceId(unassignedSource([]))).toBeNull() + }) + + it('gives the org unit field that lists where a source is assigned', () => { + expect(getAssignmentField(dataSetSource('dataSetAAA'))).toBe('dataSets') + expect(getAssignmentField(programSource('programAAA'))).toBe('programs') + }) + + it.each([ + undefined, + 'EVENT', + 'ENROLLMENT', + 'OWNER_AT_START', + 'OWNER_AT_END', + ])( + 'places values where the program is assigned with orgUnitField %s', + (orgUnitField) => { + expect(usesProgramOrgUnits(orgUnitField)).toBe(true) + expect( + canBeAtAnyOrgUnit(programSource('p', { orgUnitField })) + ).toBe(false) + } + ) + + it.each(['REGISTRATION', 'orgUnitDeAA'])( + 'places values at any org unit with orgUnitField %s', + (orgUnitField) => { + expect(usesProgramOrgUnits(orgUnitField)).toBe(false) + expect( + canBeAtAnyOrgUnit(programSource('p', { orgUnitField })) + ).toBe(true) + } + ) + + describe('getItemOperands', () => { + it('groups an element over the sources it is in', () => { + const monthly = dataSetSource('monthlyForm', [element('elementA')]) + const weekly = dataSetSource('weeklyForm', [element('elementA')]) + + expect(getItemOperands({ sources: [monthly, weekly] })).toEqual([ + { element: element('elementA'), sources: [monthly, weekly] }, + ]) + }) + + it('keeps an element with another aggregation type apart', () => { + const source = dataSetSource('monthlyForm', [ + element('elementA'), + element('elementA', 'LAST'), + ]) + + expect(getItemOperands({ sources: [source] })).toHaveLength(2) + }) + + it('adds each reporting rate and each program as an operand', () => { + const rate = dataSetSource('monthlyForm', [], true) + const program = programSource('programAAA') + + expect(getItemOperands({ sources: [rate, program] })).toEqual([ + { reportingRate: true, sources: [rate] }, + { program: true, sources: [program] }, + ]) + }) + + it('has no operand without sources', () => { + expect(getItemOperands({ sources: [] })).toEqual([]) + }) + }) +}) diff --git a/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js b/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js new file mode 100644 index 000000000..45a94ae35 --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js @@ -0,0 +1,70 @@ +import { + combineOperandResults, + combineResults, + createResult, + getMostSevere, + getUnknownResult, + unionOfReasons, +} from '../combineResults.js' + +const full = (reasons) => createResult('full', reasons) +const partial = (reasons) => createResult('partial', reasons) +const none = (reasons) => createResult('none', reasons) + +describe('combineResults', () => { + it('creates a result with no reason by default', () => { + expect(createResult('full')).toEqual({ status: 'full', reasons: [] }) + expect(getUnknownResult('UNKNOWN_PERIOD')).toEqual({ + status: 'unknown', + reasons: ['UNKNOWN_PERIOD'], + }) + }) + + it('lists every reason once, in the reason order', () => { + expect( + unionOfReasons([ + full(['REPEATED_VALUE']), + none(['PERIOD_TOO_SHORT', 'REPEATED_VALUE']), + ]) + ).toEqual(['PERIOD_TOO_SHORT', 'REPEATED_VALUE']) + }) + + it('picks the most severe result: none, partial, unknown, full', () => { + const unknown = getUnknownResult('UNKNOWN_PERIOD') + + expect(getMostSevere([full(), unknown, partial()])).toEqual(partial()) + expect(getMostSevere([full(), unknown])).toBe(unknown) + expect(getMostSevere([])).toBeUndefined() + }) + + it('combines into the most severe status with every reason', () => { + expect( + combineResults([ + full(['REPEATED_VALUE']), + none(['PERIOD_TOO_SHORT']), + ]) + ).toEqual(none(['PERIOD_TOO_SHORT', 'REPEATED_VALUE'])) + expect(combineResults([])).toEqual(full()) + }) + + describe('combineOperandResults', () => { + it('says first when an operand of an expression gives none or leaves values out', () => { + expect( + combineOperandResults([full(), none(['PERIOD_TOO_SHORT'])]) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + expect( + combineOperandResults([ + full(), + partial(['PERIOD_TYPE_MISMATCH']), + ]) + ).toEqual(partial(['OPERAND_PARTIAL', 'PERIOD_TYPE_MISMATCH'])) + }) + + it('says nothing more for a single operand, or a full result', () => { + expect(combineOperandResults([none(['PERIOD_TOO_SHORT'])])).toEqual( + none(['PERIOD_TOO_SHORT']) + ) + expect(combineOperandResults([full(), full()])).toEqual(full()) + }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js b/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js similarity index 76% rename from src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js rename to src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js index b58074bc0..f30ff736a 100644 --- a/src/modules/dataItemProfile/__tests__/getDataItemOrgUnitCompatibility.spec.js +++ b/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js @@ -1,7 +1,7 @@ -import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' -import { getDataItemOrgUnitCompatibility } from '../getDataItemOrgUnitCompatibility.js' -import { getDataItemProfile } from '../getDataItemProfile.js' -import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' +import { inDataSets } from '../../../../__fixtures__/dataItemProfileMetadata.js' +import { getDataItemProfile } from '../../getDataItemProfile.js' +import { getDataItemProfileCompatibility } from '../../getDataItemProfileCompatibility.js' +import { getDataItemProfileOrgUnitCompatibility } from '../getDataItemProfileOrgUnitCompatibility.js' const METADATA = { dataElements: { @@ -49,6 +49,7 @@ const METADATA = { }, partOfTotal: { numerator: '#{twoLevels}', denominator: '#{facility}' }, casesPerFacility: { numerator: 'I{pi}', denominator: '#{facility}' }, + constantsOnly: { numerator: 'C{constantAA}', denominator: '[days]' }, }, } @@ -65,7 +66,7 @@ const COVERAGE = { { id: 'levelDistri', level: 2 }, { id: 'levelFacili', level: 3 }, ], - units: { + orgUnits: { nationUnit1: unit('nationUnit1', 1, '/nationUnit1'), districtAAA: unit('districtAAA', 2, '/nationUnit1/districtAAA'), districtBBB: unit('districtBBB', 2, '/nationUnit1/districtBBB'), @@ -80,15 +81,15 @@ const COVERAGE = { '/nationUnit1/districtBBB/facilityDDD' ), }, - roots: ['nationUnit1'], - userUnits: ['districtBBB'], + rootIds: ['nationUnit1'], + userOrgUnitIds: ['districtBBB'], // clinicGroup: facilityAAA and facilityDDD. mixedGroupA: districtBBB and facilityAAA groups: { clinicGroup: { 3: 2 }, mixedGroupA: { 2: 1, 3: 1 }, emptyGroupA: {}, }, - assignedLevels: { + assignedOrgUnitCounts: { MonthlyForm: { 1: 1, 3: 3 }, QuarterlyForm: { 2: 2 }, WeeklyForm: { 3: 1 }, @@ -163,43 +164,50 @@ const COVERAGE = { } const judge = (id, orgUnits, { type, coverage = COVERAGE } = {}) => - getDataItemOrgUnitCompatibility(profileOf(id, type), orgUnits, coverage) + getDataItemProfileOrgUnitCompatibility(profileOf(id, type), { + orgUnits, + coverage, + }) -describe('getDataItemOrgUnitCompatibility', () => { - it('is complete where every unit at the level entered is assigned', () => { +describe('getDataItemProfileOrgUnitCompatibility', () => { + it('is full where every org unit at the deepest level assigned is', () => { expect(judge('facility', ['districtAAA'])).toEqual([ { id: 'districtAAA', status: 'full', reasons: [], - coverage: { assigned: 2, total: 2, level: 3 }, + assignment: { assigned: 2, total: 2, level: 3 }, }, ]) }) - it('is complete where only some are, since the others collect nothing', () => { + it('is full where only some are, since the others collect nothing', () => { expect(judge('facility', ['nationUnit1'])).toEqual([ { id: 'nationUnit1', status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 3, total: 4, level: 3 }, + assignment: { assigned: 3, total: 4, level: 3 }, }, ]) }) - it('is empty at a unit not assigned, entered at its level elsewhere', () => { + it('is none at an org unit not assigned, though assigned at its level elsewhere', () => { expect(judge('facility', ['facilityDDD'])).toMatchObject([ - { status: 'none', reasons: ['NOT_ASSIGNED'], coverage: null }, + { status: 'none', reasons: ['NOT_ASSIGNED'], assignment: null }, ]) }) - it('is empty below the level data is entered at', () => { + it('is none below the levels it is assigned at', () => { expect(judge('district', ['facilityAAA'])).toMatchObject([ - { status: 'none', reasons: ['BELOW_COLLECTION'] }, + { status: 'none', reasons: ['ASSIGNED_AT_HIGHER_LEVEL'] }, ]) expect(judge('district', ['nationUnit1', 'LEVEL-3'])).toMatchObject([ - { id: 'LEVEL-3', status: 'none', reasons: ['BELOW_COLLECTION'] }, + { + id: 'LEVEL-3', + status: 'none', + reasons: ['ASSIGNED_AT_HIGHER_LEVEL'], + }, ]) }) @@ -211,18 +219,18 @@ describe('getDataItemOrgUnitCompatibility', () => { { status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 3, total: 4 }, + assignment: { assigned: 3, total: 4 }, }, ]) }) - it('is partial when another data set is entered above: its values are left out', () => { + it('is partial when another data set is assigned at a higher level: its values are left out', () => { expect(judge('twoLevels', ['facilityAAA'])).toEqual([ { id: 'facilityAAA', status: 'partial', - reasons: ['BELOW_COLLECTION'], - coverage: { assigned: 1, total: 1, level: 3 }, + reasons: ['ASSIGNED_AT_HIGHER_LEVEL'], + assignment: { assigned: 1, total: 1, level: 3 }, }, ]) }) @@ -231,7 +239,10 @@ describe('getDataItemOrgUnitCompatibility', () => { expect( judge('ratio', ['facilityAAA'], { type: 'INDICATOR' }) ).toMatchObject([ - { status: 'none', reasons: ['OPERAND_EMPTY', 'BELOW_COLLECTION'] }, + { + status: 'none', + reasons: ['OPERAND_EMPTY', 'ASSIGNED_AT_HIGHER_LEVEL'], + }, ]) expect( judge('MonthlyForm.REPORTING_RATE', ['districtAAA'], { @@ -251,7 +262,7 @@ describe('getDataItemOrgUnitCompatibility', () => { ).toMatchObject([ { status: 'partial', - reasons: ['OPERAND_PARTIAL', 'BELOW_COLLECTION'], + reasons: ['OPERAND_PARTIAL', 'ASSIGNED_AT_HIGHER_LEVEL'], }, ]) }) @@ -261,8 +272,8 @@ describe('getDataItemOrgUnitCompatibility', () => { { id: 'districtAAA', status: 'none', - reasons: ['AGGREGATION_LEVEL'], - coverage: null, + reasons: ['STOPPED_BY_AGGREGATION_LEVEL'], + assignment: null, }, ]) expect(judge('cappedAtDistrict', ['facilityAAA'])).toMatchObject([ @@ -270,22 +281,22 @@ describe('getDataItemOrgUnitCompatibility', () => { ]) }) - it('counts values entered at the aggregation level or above it', () => { + it('counts values from the aggregation level or above it', () => { expect(judge('cappedAtDistrict', ['nationUnit1'])).toMatchObject([ { status: 'full', - coverage: { assigned: 1, total: 1, level: 1 }, + assignment: { assigned: 1, total: 1, level: 1 }, }, ]) }) it('is partial when the values of one data set are stopped', () => { expect(judge('cappedWithDistrictForm', ['districtAAA'])).toMatchObject([ - { status: 'partial', reasons: ['AGGREGATION_LEVEL'] }, + { status: 'partial', reasons: ['STOPPED_BY_AGGREGATION_LEVEL'] }, ]) }) - it('judges a level under boundaries, summing their counts', () => { + it('judges a level under parent org units, adding up their counts', () => { expect( judge('facility', ['districtAAA', 'districtBBB', 'LEVEL-3']) ).toEqual([ @@ -293,27 +304,27 @@ describe('getDataItemOrgUnitCompatibility', () => { id: 'LEVEL-3', status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 3, total: 4, level: 3 }, + assignment: { assigned: 3, total: 4, level: 3 }, }, ]) }) - it('judges a level under the roots, and the user units', () => { + it('judges a level under the roots, and the user org units', () => { expect(judge('district', ['LEVEL-2'])).toMatchObject([ - { status: 'full', coverage: { assigned: 2, total: 2 } }, + { status: 'full', assignment: { assigned: 2, total: 2 } }, ]) expect(judge('facility', ['USER_ORGUNIT_CHILDREN'])).toMatchObject([ - { status: 'full', coverage: { assigned: 1, total: 2 } }, + { status: 'full', assignment: { assigned: 1, total: 2 } }, ]) }) - it('is empty for a level above every boundary', () => { + it('is none for a level above every parent org unit', () => { expect(judge('facility', ['facilityAAA', 'LEVEL-2'])).toEqual([ { id: 'LEVEL-2', status: 'none', reasons: ['NOT_ASSIGNED'], - coverage: null, + assignment: null, }, ]) }) @@ -326,7 +337,7 @@ describe('getDataItemOrgUnitCompatibility', () => { id: 'nationUnit1', status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 2, total: 4, level: 3 }, + assignment: { assigned: 2, total: 4, level: 3 }, }, ]) expect( @@ -353,11 +364,11 @@ describe('getDataItemOrgUnitCompatibility', () => { id: 'OU_GROUP-clinicGroup', status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 1, total: 2, level: 3 }, + assignment: { assigned: 1, total: 2, level: 3 }, }, ]) expect(judge('district', ['OU_GROUP-clinicGroup'])).toMatchObject([ - { status: 'none', reasons: ['BELOW_COLLECTION'] }, + { status: 'none', reasons: ['ASSIGNED_AT_HIGHER_LEVEL'] }, ]) }) @@ -366,12 +377,12 @@ describe('getDataItemOrgUnitCompatibility', () => { { status: 'full', reasons: ['PARTLY_ASSIGNED'], - coverage: { assigned: 2, total: 3, level: 3 }, + assignment: { assigned: 2, total: 3, level: 3 }, }, ]) }) - it('leaves out the levels with no member in the boundaries', () => { + it('leaves out the levels with no member under the parent org units', () => { expect( judge('facility', ['districtAAA', 'OU_GROUP-mixedGroupA']) ).toEqual([ @@ -379,31 +390,49 @@ describe('getDataItemOrgUnitCompatibility', () => { id: 'OU_GROUP-mixedGroupA', status: 'full', reasons: [], - coverage: { assigned: 1, total: 1, level: 3 }, + assignment: { assigned: 1, total: 1, level: 3 }, + }, + ]) + }) + + it('is none for a group with no members, which analytics refuses', () => { + expect(judge('facility', ['OU_GROUP-emptyGroupA'])).toEqual([ + { + id: 'OU_GROUP-emptyGroupA', + status: 'none', + reasons: ['EMPTY_GROUP'], + assignment: null, }, ]) }) - it('is empty for a group with no members', () => { - expect(judge('facility', ['OU_GROUP-emptyGroupA'])).toMatchObject([ - { status: 'none', reasons: ['NOT_ASSIGNED'] }, + it('is full for an item with no source, nothing limits where it has values', () => { + expect( + judge('constantsOnly', ['facilityDDD'], { type: 'INDICATOR' }) + ).toEqual([ + { + id: 'facilityDDD', + status: 'full', + reasons: [], + assignment: null, + }, ]) }) - it('fits any place for a program indicator placed by registration or an attribute', () => { + it('fits any org unit for a program indicator placed by registration or an attribute', () => { expect( judge('piByRegistr', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) ).toEqual([ { id: 'facilityDDD', status: 'full', - reasons: ['ORG_UNIT_FIELD'], - coverage: null, + reasons: ['ANY_ORG_UNIT'], + assignment: null, }, ]) expect( judge('piByAttribu', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) - ).toMatchObject([{ status: 'full', reasons: ['ORG_UNIT_FIELD'] }]) + ).toMatchObject([{ status: 'full', reasons: ['ANY_ORG_UNIT'] }]) }) it('keeps the program assignment for a program indicator placed by owner', () => { @@ -412,7 +441,7 @@ describe('getDataItemOrgUnitCompatibility', () => { ).toMatchObject([{ status: 'none', reasons: ['NOT_ASSIGNED'] }]) }) - it('cannot tell for groups not loaded, unknown units, event data without a program, or missing metadata', () => { + it('cannot tell for groups or org units not loaded, or missing metadata', () => { expect(judge('facility', ['OU_GROUP-notLoadedGr'])).toMatchObject([ { status: 'unknown', reasons: ['UNKNOWN_ORG_UNIT'] }, ]) @@ -424,7 +453,7 @@ describe('getDataItemOrgUnitCompatibility', () => { ).toMatchObject([{ status: 'unknown', reasons: ['UNKNOWN_ORG_UNIT'] }]) expect( judge('someElement', ['nationUnit1'], { type: 'EVENT_DATA_ITEM' }) - ).toMatchObject([{ status: 'unknown', reasons: ['EVENT_DATA'] }]) + ).toMatchObject([{ status: 'unknown', reasons: ['PROFILE_UNKNOWN'] }]) expect( judge('notThere', ['nationUnit1'], { type: 'PROGRAM_INDICATOR' }) ).toMatchObject([{ status: 'unknown', reasons: ['PROFILE_UNKNOWN'] }]) diff --git a/src/modules/dataItemProfile/compatibility/combineResults.js b/src/modules/dataItemProfile/compatibility/combineResults.js new file mode 100644 index 000000000..725a84b07 --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/combineResults.js @@ -0,0 +1,54 @@ +import { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_SEVERITY, + COMPATIBILITY_UNKNOWN, + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, + REASON_ORDER, +} from '../constants.js' + +export const createResult = (status, reasons = []) => ({ status, reasons }) + +export const getUnknownResult = (reason) => + createResult(COMPATIBILITY_UNKNOWN, [reason]) + +// Every reason of the results, once each, in REASON_ORDER +export const unionOfReasons = (results) => + REASON_ORDER.filter((reason) => + results.some(({ reasons }) => reasons.includes(reason)) + ) + +// The result with the most severe status, or undefined for none +export const getMostSevere = (results) => + COMPATIBILITY_SEVERITY.map((status) => + results.find((result) => result.status === status) + ).find(Boolean) + +// The most severe status, with every reason; full for no results +export const combineResults = (results) => + createResult( + getMostSevere(results)?.status ?? COMPATIBILITY_FULL, + unionOfReasons(results) + ) + +const OPERAND_REASON_BY_STATUS = { + [COMPATIBILITY_NONE]: REASON_OPERAND_EMPTY, + [COMPATIBILITY_PARTIAL]: REASON_OPERAND_PARTIAL, +} + +/** + * An expression's result, from its operands': the most severe decides, and + * with more than one operand, a none or partial result says so first with + * OPERAND_EMPTY or OPERAND_PARTIAL. + */ +export const combineOperandResults = (results) => { + const combined = combineResults(results) + const reason = + results.length > 1 && OPERAND_REASON_BY_STATUS[combined.status] + + return reason + ? { ...combined, reasons: [reason, ...combined.reasons] } + : combined +} diff --git a/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js b/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js new file mode 100644 index 000000000..3689d3c0b --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js @@ -0,0 +1,151 @@ +import { + COMPATIBILITY_NONE, + ORG_UNIT_ITEM_TYPE_GROUP, + REASON_EMPTY_GROUP, + REASON_NOT_ASSIGNED, + REASON_PROFILE_UNKNOWN, + REASON_UNKNOWN_ORG_UNIT, +} from '../constants.js' +import { + getRequestedLevels, + readOrgUnitSelection, +} from '../orgUnits/orgUnitSelection.js' +import { getItemOperands } from '../sources.js' +import { + combineOperandResults, + createResult, + getMostSevere, + getUnknownResult, + unionOfReasons, +} from './combineResults.js' +import { getOperandResult, withAssignment } from './orgUnitSourceResults.js' + +const addUpAssignments = (results) => { + const assignments = results + .map(({ assignment }) => assignment) + .filter(Boolean) + const sum = (key) => + assignments.reduce((total, item) => total + item[key], 0) + + return assignments.length + ? { + assigned: sum('assigned'), + total: sum('total'), + level: Math.max(...assignments.map(({ level }) => level)), + } + : null +} + +// The item at one requested level: each operand over its sources, the most severe decides +const getResultAtLevel = (operands, counts) => { + const results = operands.map((operand) => getOperandResult(operand, counts)) + + return withAssignment( + combineOperandResults(results), + getMostSevere(results)?.assignment + ) +} + +const isEmptyGroup = (selectionItem, coverage) => + selectionItem.type === ORG_UNIT_ITEM_TYPE_GROUP && + coverage.groups?.[selectionItem.groupId] && + !Object.values(coverage.groups[selectionItem.groupId]).some( + (members) => members > 0 + ) + +const getSelectionItemCompatibility = ( + selectionItem, + { operands, parentOrgUnitIds, coverage } +) => { + if (isEmptyGroup(selectionItem, coverage)) { + return withAssignment( + createResult(COMPATIBILITY_NONE, [REASON_EMPTY_GROUP]) + ) + } + + const requestedLevels = getRequestedLevels( + selectionItem, + parentOrgUnitIds, + coverage + ) + + if (!requestedLevels) { + return withAssignment(getUnknownResult(REASON_UNKNOWN_ORG_UNIT)) + } + + const results = requestedLevels + // Parents a group has no member under add nothing + .filter( + ({ groupId, countsKey, level }) => + !groupId || coverage.counts[countsKey]?.totals?.[level] > 0 + ) + .map(({ countsKey, level }) => + getResultAtLevel(operands, { + ...coverage.counts[countsKey], + assignedOrgUnitCounts: coverage.assignedOrgUnitCounts, + level, + }) + ) + + if (!results.length) { + return withAssignment( + createResult(COMPATIBILITY_NONE, [REASON_NOT_ASSIGNED]) + ) + } + + return withAssignment( + createResult(getMostSevere(results).status, unionOfReasons(results)), + addUpAssignments(results) + ) +} + +/** + * Whether the org units of a selection (DV's org unit items) suit a data + * item, from where its data sets and programs are assigned (`coverage`, from + * fetchOrgUnitCoverage): one result per selection item, `{ id, status, + * reasons, assignment }`, with the same statuses as for periods. + * + * Assigned only at higher levels: none, ASSIGNED_AT_HIGHER_LEVEL. Not + * assigned there: none, NOT_ASSIGNED. Stopped by the element's aggregation + * levels: none, STOPPED_BY_AGGREGATION_LEVEL. Assigned to only some org units + * at the deepest level: full, since the others collect nothing, with + * PARTLY_ASSIGNED and the counts (`assignment`). An element in several data + * sets is full where one is assigned, and partial when another's values can't + * reach the org unit. A group is judged at each level its members are at; a + * group without members is refused by analytics (EMPTY_GROUP). An item with + * no source (an expression of constants) has nothing limiting where it has + * values: full. + */ +export const getDataItemProfileOrgUnitCompatibility = ( + profile, + { orgUnits = [], coverage } = {} +) => { + const { selectionItems, parentOrgUnitIds } = readOrgUnitSelection(orgUnits) + const judge = (getResult) => + selectionItems.map((selectionItem) => ({ + id: selectionItem.id, + ...getResult(selectionItem), + })) + + if (profile.unknown) { + return judge(() => + withAssignment(getUnknownResult(REASON_PROFILE_UNKNOWN)) + ) + } + + if (!coverage) { + return judge(() => + withAssignment(getUnknownResult(REASON_UNKNOWN_ORG_UNIT)) + ) + } + + const operands = getItemOperands(profile) + + return judge((selectionItem) => + getSelectionItemCompatibility(selectionItem, { + operands, + parentOrgUnitIds, + coverage, + }) + ) +} diff --git a/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js b/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js new file mode 100644 index 000000000..86f99f9a2 --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js @@ -0,0 +1,162 @@ +import { + REASON_PROFILE_UNKNOWN, + REASON_SETTING_MISSING, + REASON_UNKNOWN_PERIOD, + REASON_UNSUPPORTED_VERSION, +} from '../constants.js' +import { getYearsTouched } from '../periods/firstLastValues.js' +import { + getPeriodDates, + isAlignedWithPeriodType, +} from '../periods/periodRanges.js' +import { + canAggregateInto, + getCandidatePeriodTypes, + getPeriodTypeOfPeriodId, + isPeriodTypeSupported, +} from '../periods/periodTypes.js' +import { getSourcePeriodType } from '../profile/assignedPeriodTypes.js' +import { getItemOperands, getSourceId } from '../sources.js' +import { combineOperandResults, getUnknownResult } from './combineResults.js' +import { getOperandResult, getSourceResult } from './periodSourceResults.js' + +// An expression needs all its operands: the most severe one decides +const getItemResult = (operands, query) => + combineOperandResults( + operands.map((operand) => getOperandResult(operand, query)) + ) + +const isSameResult = (a, b) => + a.status === b.status && a.reasons.join() === b.reasons.join() + +/* A relative period can be of several types: a result holds only when they + * all agree. A type the server version can't answer gives unknown. */ +const agreeOn = (queries, getResult) => { + const results = queries.map((query) => + query.supported + ? getResult(query) + : getUnknownResult(REASON_UNSUPPORTED_VERSION) + ) + + return results.every((candidate) => isSameResult(candidate, results[0])) + ? results[0] + : getUnknownResult(REASON_SETTING_MISSING) +} + +// Whether the period starts and ends on the edges of the data's own periods +const getAlignsWithData = (profile, { periodType, dates, calendar }) => { + const dataPeriodTypes = profile.sources + .map(getSourcePeriodType) + .filter((dataPeriodType) => + canAggregateInto(dataPeriodType, periodType) + ) + + if (!dates || !dataPeriodTypes.length) { + return null + } + + const aligned = new Set( + dataPeriodTypes.map((dataPeriodType) => + isAlignedWithPeriodType(dates, dataPeriodType, calendar) + ) + ) + + if (aligned.has(false)) { + return false + } + + return aligned.has(null) ? null : true +} + +/* The calendar years the selection's periods touch, as one request would, or + * null when a period has no dates (a relative period, a period type) */ +const getSelectionYears = (periods, calendar) => { + const dates = periods.map((period) => + getPeriodTypeOfPeriodId(period) + ? getPeriodDates(period, calendar) + : null + ) + + if (!dates.length || dates.includes(null)) { + return null + } + + return [...new Set(dates.flatMap(getYearsTouched))].sort((a, b) => a - b) +} + +const getUnknownPeriodResult = (profile, { period, periodTypes, reason }) => ({ + id: period, + periodTypes, + ...getUnknownResult(reason), + alignsWithData: null, + sources: profile.sources.map((source) => ({ + sourceId: getSourceId(source), + ...getUnknownResult(reason), + })), +}) + +const getPeriodResult = (profile, period, options) => { + const periodTypes = getCandidatePeriodTypes(period, options) + + if (profile.unknown || !periodTypes.length) { + return getUnknownPeriodResult(profile, { + period, + periodTypes, + reason: profile.unknown + ? REASON_PROFILE_UNKNOWN + : REASON_UNKNOWN_PERIOD, + }) + } + + const dates = getPeriodTypeOfPeriodId(period) + ? getPeriodDates(period, options.calendar) + : null + const queries = periodTypes.map((periodType) => ({ + periodType, + dates, + years: options.selectionYears, + calendar: options.calendar, + serverVersion: options.serverVersion, + supported: isPeriodTypeSupported(periodType, options.serverVersion), + })) + const operands = getItemOperands(profile) + + return { + id: period, + periodTypes, + ...agreeOn(queries, (query) => getItemResult(operands, query)), + alignsWithData: + queries.length === 1 + ? getAlignsWithData(profile, queries[0]) + : null, + sources: profile.sources.map((source) => ({ + sourceId: getSourceId(source), + ...agreeOn(queries, (query) => getSourceResult(source, query)), + })), + } +} + +/** + * Whether the periods of a selection suit a data item, from its profile: for + * each period, `{ id, periodTypes, status, reasons, alignsWithData, sources }`, + * with a result per source (aligned with `profile.sources`). + * + * `periods` are fixed ids, relative ids or period types. `options` sets the + * type of relative weeks and financial years (`weeklyPeriodType`, + * `financialYearPeriodType`), the `calendar` for dates, and the + * `serverVersion` ({ major, minor }), since some versions can't answer some + * period types. The periods are taken as one request: for FIRST and LAST + * data, the years they touch decide which data periods count (other items of + * the request, like a `.periodOffset()` operand, can add years and aren't + * seen). + */ +export const getDataItemProfilePeriodCompatibility = ( + profile, + { periods = [], ...options } = {} +) => { + const selectionYears = getSelectionYears(periods, options.calendar) + + return periods.map((period) => + getPeriodResult(profile, period, { ...options, selectionYears }) + ) +} diff --git a/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js b/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js new file mode 100644 index 000000000..be1d0adc3 --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js @@ -0,0 +1,189 @@ +import { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + LEFT_OUT_REASONS, + REASON_ANY_ORG_UNIT, + REASON_ASSIGNED_AT_HIGHER_LEVEL, + REASON_NOT_ASSIGNED, + REASON_PARTLY_ASSIGNED, + REASON_STOPPED_BY_AGGREGATION_LEVEL, +} from '../constants.js' +import { canBeAtAnyOrgUnit, getSourceId } from '../sources.js' +import { createResult, unionOfReasons } from './combineResults.js' + +/* Org unit results carry `assignment`: how many org units at the deepest + * level assigned are assigned ({ assigned, total, level }), or null */ +export const withAssignment = (result, assignment = null) => ({ + ...result, + assignment, +}) + +const getLevelsWithOrgUnits = (countsByLevel) => + Object.keys(countsByLevel) + .map(Number) + .filter((level) => countsByLevel[level] > 0) + +/* Analytics nulls the levels up to each aggregation level for values from + * org units below it (dhis2-core AggregationLevelsHelper): a value from + * `assignedLevel` can't reach `requestedLevel` when an aggregation level lies + * between them (requestedLevel ≤ L < assignedLevel; checked by the test tool + * on 2.40 to 2.44) */ +const isBlockedByAggregationLevel = ( + assignedLevel, + requestedLevel, + aggregationLevels +) => + aggregationLevels.some( + (aggregationLevel) => + requestedLevel <= aggregationLevel && + aggregationLevel < assignedLevel + ) + +const getNotReachingReason = ({ + byLevel, + ancestors, + assignedOrgUnitCounts, + level, +}) => { + const assignedAtThisLevelElsewhere = getLevelsWithOrgUnits( + assignedOrgUnitCounts + ).some((assignedLevel) => assignedLevel >= level) + const assignedHigher = + ancestors > 0 || + getLevelsWithOrgUnits(byLevel).some( + (assignedLevel) => assignedLevel < level + ) + + return assignedHigher && !assignedAtThisLevelElsewhere + ? REASON_ASSIGNED_AT_HIGHER_LEVEL + : REASON_NOT_ASSIGNED +} + +/* One data set or program at one requested level, from its assignment + * counts. Values add up from lower levels, but are never split down, so a + * source assigned only at higher levels can't fill the level asked. The + * deepest level assigned says how much of the org unit it covers. */ +const getSourceResult = ({ + sourceCounts, + assignedOrgUnitCounts = {}, + aggregationLevels = [], + totals, + level, +}) => { + const { byLevel = {}, ancestors = 0 } = sourceCounts ?? {} + const assignedAtOrBelow = getLevelsWithOrgUnits(byLevel).filter( + (assignedLevel) => assignedLevel >= level + ) + const reaching = assignedAtOrBelow.filter( + (assignedLevel) => + !isBlockedByAggregationLevel( + assignedLevel, + level, + aggregationLevels + ) + ) + + if (assignedAtOrBelow.length && !reaching.length) { + return withAssignment( + createResult(COMPATIBILITY_NONE, [ + REASON_STOPPED_BY_AGGREGATION_LEVEL, + ]) + ) + } + + if (!reaching.length) { + return withAssignment( + createResult(COMPATIBILITY_NONE, [ + getNotReachingReason({ + byLevel, + ancestors, + assignedOrgUnitCounts, + level, + }), + ]) + ) + } + + const deepestLevel = Math.max(...reaching) + const assignment = { + assigned: byLevel[deepestLevel], + total: totals[deepestLevel] ?? byLevel[deepestLevel], + level: deepestLevel, + } + + // Org units it isn't assigned to collect nothing: nothing is left out + return withAssignment( + createResult( + COMPATIBILITY_FULL, + assignment.assigned < assignment.total + ? [REASON_PARTLY_ASSIGNED] + : [] + ), + assignment + ) +} + +const AT_ANY_ORG_UNIT = withAssignment( + createResult(COMPATIBILITY_FULL, [REASON_ANY_ORG_UNIT]) +) + +const isLeftOut = ({ reasons }) => + reasons.some((reason) => LEFT_OUT_REASONS.has(reason)) + +/* One operand over its sources. A source not assigned there leaves nothing + * out; one whose values can't reach the level asked (assigned higher, or + * stopped by aggregation levels) leaves them out, so with another that fills + * the org unit, the value is partial. */ +const combineSources = (bySource) => { + const filling = bySource.filter( + ({ status }) => status === COMPATIBILITY_FULL + ) + const reasons = unionOfReasons(bySource) + const leftOut = bySource.some(isLeftOut) + + if (!filling.length) { + return withAssignment( + createResult( + COMPATIBILITY_NONE, + leftOut + ? reasons.filter((reason) => LEFT_OUT_REASONS.has(reason)) + : [REASON_NOT_ASSIGNED] + ) + ) + } + + const bestAssignment = filling + .map(({ assignment }) => assignment) + .filter(Boolean) + .sort((a, b) => b.assigned / b.total - a.assigned / a.total)[0] + + return withAssignment( + createResult( + leftOut ? COMPATIBILITY_PARTIAL : COMPATIBILITY_FULL, + reasons.filter((reason) => reason !== REASON_NOT_ASSIGNED) + ), + bestAssignment + ) +} + +/** + * One operand ({ element, sources }, getItemOperands) at one requested level, + * from the counts kept for it in the coverage, with the `level` asked and the + * sources' `assignedOrgUnitCounts` across the hierarchy. + */ +export const getOperandResult = ({ element, sources }, counts) => + combineSources( + sources.map((source) => + canBeAtAnyOrgUnit(source) + ? AT_ANY_ORG_UNIT + : getSourceResult({ + sourceCounts: counts.sources?.[getSourceId(source)], + assignedOrgUnitCounts: + counts.assignedOrgUnitCounts?.[getSourceId(source)], + aggregationLevels: element?.aggregationLevels, + totals: counts.totals ?? {}, + level: counts.level, + }) + ) + ) diff --git a/src/modules/dataItemProfile/compatibility/periodSourceResults.js b/src/modules/dataItemProfile/compatibility/periodSourceResults.js new file mode 100644 index 000000000..78a1113db --- /dev/null +++ b/src/modules/dataItemProfile/compatibility/periodSourceResults.js @@ -0,0 +1,174 @@ +import { + COMPATIBILITY_FULL, + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + PERIOD_AGGREGATION_AVERAGE, + PERIOD_AGGREGATION_FIRST, + PERIOD_AGGREGATION_LAST, + REASON_EARLIER_PERIOD_VALUE, + REASON_NO_EARLIER_PERIOD_VALUE, + REASON_PERIOD_TOO_SHORT, + REASON_PERIOD_TYPE_MISMATCH, + REASON_REPEATED_VALUE, + REASON_REPORTING_RATE_TOO_SHORT, + REASON_UNSUPPORTED_VERSION, +} from '../constants.js' +import { getFirstOrLastValuePeriod } from '../periods/firstLastValues.js' +import { getFixedPeriodOfTypeByDate } from '../periods/periodRanges.js' +import { canAggregateInto, getFrequencyOrder } from '../periods/periodTypes.js' +import { getSourcePeriodType } from '../profile/assignedPeriodTypes.js' +import { isProgramSource } from '../sources.js' +import { + combineResults, + createResult, + getUnknownResult, + unionOfReasons, +} from './combineResults.js' + +/* The period rules for one source and one query ({ periodType, dates, years, + * calendar, serverVersion }): a fixed period's dates, the years the request + * touches, and a period type of the selection */ + +const FULL = createResult(COMPATIBILITY_FULL) + +const getMissingReason = (dataPeriodType, queryPeriodType) => + getFrequencyOrder(queryPeriodType) < getFrequencyOrder(dataPeriodType) + ? REASON_PERIOD_TOO_SHORT + : REASON_PERIOD_TYPE_MISMATCH + +/* FIRST and LAST data, by analytics' rule (firstLastValues.js): the value of + * a data period inside the period, of one before it, or none. It can only be + * told for fixed periods in a selection of fixed periods, since every period + * of the request decides which data periods count. */ +const getFirstOrLastResult = (element, dataPeriodType, query) => { + const canDate = + query.dates && + query.years && + getFixedPeriodOfTypeByDate( + dataPeriodType, + query.dates.endDate, + query.calendar + ) + + if (!canDate) { + const takesEarlierValue = + element.periodAggregationType === PERIOD_AGGREGATION_FIRST || + !canAggregateInto(dataPeriodType, query.periodType) + + return takesEarlierValue + ? createResult(COMPATIBILITY_FULL, [REASON_EARLIER_PERIOD_VALUE]) + : FULL + } + + const valuePeriod = getFirstOrLastValuePeriod({ + periodAggregationType: element.periodAggregationType, + periodType: dataPeriodType, + dates: query.dates, + years: query.years, + calendar: query.calendar, + }) + + if (!valuePeriod) { + return createResult(COMPATIBILITY_NONE, [ + REASON_NO_EARLIER_PERIOD_VALUE, + ]) + } + + return valuePeriod.startDate >= query.dates.startDate + ? FULL + : createResult(COMPATIBILITY_FULL, [REASON_EARLIER_PERIOD_VALUE]) +} + +/* One element of one data set, for one query. When the data can't add up + * into the period, averaged values are repeated into it, and other data + * gives none. FIRST and LAST follow their own rule. */ +const getElementResult = (element, dataPeriodType, query) => { + if ( + element.periodAggregationType === PERIOD_AGGREGATION_FIRST || + element.periodAggregationType === PERIOD_AGGREGATION_LAST + ) { + return getFirstOrLastResult(element, dataPeriodType, query) + } + + if (canAggregateInto(dataPeriodType, query.periodType)) { + return FULL + } + + return element.periodAggregationType === PERIOD_AGGREGATION_AVERAGE + ? createResult(COMPATIBILITY_FULL, [REASON_REPEATED_VALUE]) + : createResult(COMPATIBILITY_NONE, [ + getMissingReason(dataPeriodType, query.periodType), + ]) +} + +// A reporting rate asked for a shorter period gives a meaningless value +const getReportingRateResult = (dataPeriodType, query) => + canAggregateInto(dataPeriodType, query.periodType) + ? FULL + : createResult(COMPATIBILITY_NONE, [REASON_REPORTING_RATE_TOO_SHORT]) + +/* Events and enrollments are placed by their own dates: they fit any period. + * VERSION-TOGGLE: remove the check when 43 is the lowest supported version. + * Before 2.43, analytics can't query a program indicator without period + * boundaries (E7145). */ +const getProgramResult = (source, query) => { + const missingBoundariesUnsupported = + source.missingPeriodBoundaries && + query.serverVersion?.major === 2 && + query.serverVersion.minor < 43 + + return missingBoundariesUnsupported + ? getUnknownResult(REASON_UNSUPPORTED_VERSION) + : FULL +} + +export const getSourceResult = (source, query) => { + if (isProgramSource(source)) { + return getProgramResult(source, query) + } + + const dataPeriodType = getSourcePeriodType(source) + const results = source.elements.map((element) => + getElementResult(element, dataPeriodType, query) + ) + + if (source.reportingRate) { + results.push(getReportingRateResult(dataPeriodType, query)) + } + + return combineResults(results) +} + +// The values of one element over its data sets add up: some missing is partial +const combineSources = (results) => { + const statuses = results.map(({ status }) => status) + const reasons = unionOfReasons(results) + + if (statuses.every((status) => status === COMPATIBILITY_NONE)) { + return createResult(COMPATIBILITY_NONE, reasons) + } + + return createResult( + statuses.some((status) => status === COMPATIBILITY_NONE) + ? COMPATIBILITY_PARTIAL + : COMPATIBILITY_FULL, + reasons + ) +} + +export const getOperandResult = ( + { element, reportingRate, sources }, + query +) => { + if (element) { + return combineSources( + sources.map((source) => + getElementResult(element, getSourcePeriodType(source), query) + ) + ) + } + + return reportingRate + ? getReportingRateResult(getSourcePeriodType(sources[0]), query) + : getProgramResult(sources[0], query) +} diff --git a/src/modules/dataItemProfile/compatibilityStatuses.js b/src/modules/dataItemProfile/compatibilityStatuses.js deleted file mode 100644 index 3a09ecd9b..000000000 --- a/src/modules/dataItemProfile/compatibilityStatuses.js +++ /dev/null @@ -1,31 +0,0 @@ -export const COMPATIBILITY_FULL = 'full' -export const COMPATIBILITY_PARTIAL = 'partial' -export const COMPATIBILITY_NONE = 'none' -export const COMPATIBILITY_UNKNOWN = 'unknown' - -// The profile is unknown: see its reasons -export const REASON_PROFILE_UNKNOWN = 'PROFILE_UNKNOWN' - -/* An expression whose operand gives no value has none (a ratio without its - * denominator); one whose operand leaves values out is computed from - * incomplete data, and can be off either way */ -export const REASON_OPERAND_EMPTY = 'OPERAND_EMPTY' -export const REASON_OPERAND_PARTIAL = 'OPERAND_PARTIAL' - -export const OPERAND_REASONS = [REASON_OPERAND_EMPTY, REASON_OPERAND_PARTIAL] - -/** - * An expression's result, from its most severe operand's: with more than one - * operand, a none or partial result says so with OPERAND_EMPTY or - * OPERAND_PARTIAL, first. - */ -export const withOperandReason = (result, operandCount) => { - const reason = - operandCount > 1 && - { - [COMPATIBILITY_NONE]: REASON_OPERAND_EMPTY, - [COMPATIBILITY_PARTIAL]: REASON_OPERAND_PARTIAL, - }[result.status] - - return reason ? { ...result, reasons: [reason, ...result.reasons] } : result -} diff --git a/src/modules/dataItemProfile/constants.js b/src/modules/dataItemProfile/constants.js new file mode 100644 index 000000000..f19df9406 --- /dev/null +++ b/src/modules/dataItemProfile/constants.js @@ -0,0 +1,170 @@ +// Compatibility statuses: compatible with all, some or none of the item's sources +export const COMPATIBILITY_FULL = 'full' +export const COMPATIBILITY_PARTIAL = 'partial' +export const COMPATIBILITY_NONE = 'none' +export const COMPATIBILITY_UNKNOWN = 'unknown' + +// Most severe first: over several periods, org units or operands, the most severe wins +export const COMPATIBILITY_SEVERITY = [ + COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + COMPATIBILITY_UNKNOWN, + COMPATIBILITY_FULL, +] + +/* Why a profile is unknown (profile.reasons, each with the id it concerns): + * metadata is missing or can't be read, never guessed */ +export const PROFILE_REASON_MISSING_METADATA = 'MISSING_METADATA' +export const PROFILE_REASON_MISSING_PROGRAM = 'MISSING_PROGRAM' +export const PROFILE_REASON_UNKNOWN_OPERAND = 'UNKNOWN_OPERAND' +export const PROFILE_REASON_UNKNOWN_PERIOD_TYPE = 'UNKNOWN_PERIOD_TYPE' +export const PROFILE_REASON_UNSUPPORTED_ITEM_TYPE = 'UNSUPPORTED_ITEM_TYPE' +export const PROFILE_REASON_NO_DATA_SET = 'NO_DATA_SET' +export const PROFILE_REASON_NOT_AGGREGATABLE = 'NOT_AGGREGATABLE' + +/* Why a compatibility status, in the order results list them */ + +// An expression whose operand gives no value has none (a ratio without its denominator) +export const REASON_OPERAND_EMPTY = 'OPERAND_EMPTY' +// An expression computed from an operand that leaves values out: it can be off either way +export const REASON_OPERAND_PARTIAL = 'OPERAND_PARTIAL' + +// The period is shorter than the period type of the data sets +export const REASON_PERIOD_TOO_SHORT = 'PERIOD_TOO_SHORT' +// Another period type of the same length (Wednesday weeks asked by Monday week) +export const REASON_PERIOD_TYPE_MISMATCH = 'PERIOD_TYPE_MISMATCH' +// A reporting rate asked for a shorter period: a meaningless value +export const REASON_REPORTING_RATE_TOO_SHORT = 'REPORTING_RATE_TOO_SHORT' +// FIRST or LAST data with no data period that counts for the period +export const REASON_NO_EARLIER_PERIOD_VALUE = 'NO_EARLIER_PERIOD_VALUE' +// The value of a longer data period, repeated (period aggregation AVERAGE) +export const REASON_REPEATED_VALUE = 'REPEATED_VALUE' +// The value of an earlier data period (period aggregation FIRST or LAST) +export const REASON_EARLIER_PERIOD_VALUE = 'EARLIER_PERIOD_VALUE' + +// Not assigned there, though assigned at that level elsewhere +export const REASON_NOT_ASSIGNED = 'NOT_ASSIGNED' +// Assigned only at higher levels than the one asked: analytics never splits values down +export const REASON_ASSIGNED_AT_HIGHER_LEVEL = 'ASSIGNED_AT_HIGHER_LEVEL' +// The data element's aggregation levels stop values from reaching the level asked +export const REASON_STOPPED_BY_AGGREGATION_LEVEL = + 'STOPPED_BY_AGGREGATION_LEVEL' +// An org unit group without members: analytics refuses it (E7143), leave it out of the request +export const REASON_EMPTY_GROUP = 'EMPTY_GROUP' +// Assigned to only some org units at the deepest level: the others collect nothing +export const REASON_PARTLY_ASSIGNED = 'PARTLY_ASSIGNED' +// A program indicator placed by registration or an org unit attribute: values can be at any org unit +export const REASON_ANY_ORG_UNIT = 'ANY_ORG_UNIT' + +// The profile is unknown: see its reasons +export const REASON_PROFILE_UNKNOWN = 'PROFILE_UNKNOWN' +// The period id can't be read +export const REASON_UNKNOWN_PERIOD = 'UNKNOWN_PERIOD' +// A relative period's type depends on a setting that wasn't given, and its types disagree +export const REASON_SETTING_MISSING = 'SETTING_MISSING' +// The server version can't answer it (QuarterlyNov before 2.41, a program indicator without period boundaries before 2.43) +export const REASON_UNSUPPORTED_VERSION = 'UNSUPPORTED_VERSION' +// The org unit, level or group isn't loaded or can't be read +export const REASON_UNKNOWN_ORG_UNIT = 'UNKNOWN_ORG_UNIT' + +export const REASON_ORDER = [ + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, + REASON_PERIOD_TOO_SHORT, + REASON_PERIOD_TYPE_MISMATCH, + REASON_REPORTING_RATE_TOO_SHORT, + REASON_NO_EARLIER_PERIOD_VALUE, + REASON_REPEATED_VALUE, + REASON_EARLIER_PERIOD_VALUE, + REASON_NOT_ASSIGNED, + REASON_ASSIGNED_AT_HIGHER_LEVEL, + REASON_STOPPED_BY_AGGREGATION_LEVEL, + REASON_EMPTY_GROUP, + REASON_PARTLY_ASSIGNED, + REASON_ANY_ORG_UNIT, + REASON_PROFILE_UNKNOWN, + REASON_UNKNOWN_PERIOD, + REASON_SETTING_MISSING, + REASON_UNSUPPORTED_VERSION, + REASON_UNKNOWN_ORG_UNIT, +] + +// Values that exist but can't reach the org unit level asked +export const LEFT_OUT_REASONS = new Set([ + REASON_ASSIGNED_AT_HIGHER_LEVEL, + REASON_STOPPED_BY_AGGREGATION_LEVEL, +]) + +// Analytics' item type for reporting rates (ds.REPORTING_RATE), missing from dataTypes.js +export const DIMENSION_TYPE_REPORTING_RATE = 'REPORTING_RATE' + +/* Expression operands without a dimension item type: constants, org unit + * group counts and [days] have no source; an unknown prefix makes the + * profile unknown */ +export const OPERAND_TYPE_CONSTANT = 'CONSTANT' +export const OPERAND_TYPE_ORG_UNIT_GROUP = 'ORG_UNIT_GROUP' +export const OPERAND_TYPE_DAYS = 'DAYS' +export const OPERAND_TYPE_UNKNOWN = 'UNKNOWN' + +// How values aggregate over time (dhis2-core periodAggregationType) +export const PERIOD_AGGREGATION_AVERAGE = 'AVERAGE' +export const PERIOD_AGGREGATION_FIRST = 'FIRST' +export const PERIOD_AGGREGATION_LAST = 'LAST' + +export const NOT_AGGREGATABLE_AGGREGATION_TYPES = new Set(['NONE']) + +/* A program indicator's orgUnitField that places values where its program is + * assigned: the event's or enrollment's org unit (unset, EVENT, ENROLLMENT), + * or the owner's, which falls back to it. REGISTRATION and an org unit data + * element or attribute (its id) can place values at any org unit. */ +export const PROGRAM_ORG_UNIT_FIELDS = new Set([ + 'EVENT', + 'ENROLLMENT', + 'OWNER_AT_START', + 'OWNER_AT_END', +]) + +// Org unit selection items, as DV saves them +export const ORG_UNIT_ITEM_TYPE_ORG_UNIT = 'ORG_UNIT' +export const ORG_UNIT_ITEM_TYPE_LEVEL = 'LEVEL' +export const ORG_UNIT_ITEM_TYPE_GROUP = 'GROUP' +export const ORG_UNIT_ITEM_TYPE_USER = 'USER' +export const ORG_UNIT_ITEM_TYPE_UNKNOWN = 'UNKNOWN' + +// How two date ranges relate (comparePeriodRanges) +export const PERIOD_RANGE_SAME = 'same' +export const PERIOD_RANGE_WITHIN = 'within' +export const PERIOD_RANGE_CONTAINS = 'contains' +export const PERIOD_RANGE_OVERLAPS = 'overlaps' +export const PERIOD_RANGE_DISJOINT = 'disjoint' + +/* Server period type names with their frequencyOrder, as /api/periodTypes + * returns them (checked against the test tool's recordings) */ +export const PERIOD_TYPE_FREQUENCY_ORDER = { + Daily: 1, + Weekly: 7, + WeeklyWednesday: 7, + WeeklyThursday: 7, + WeeklyFriday: 7, + WeeklySaturday: 7, + WeeklySunday: 7, + BiWeekly: 14, + Monthly: 30, + BiMonthly: 61, + Quarterly: 91, + QuarterlyNov: 91, + SixMonthly: 182, + SixMonthlyApril: 182, + SixMonthlyNov: 182, + Yearly: 365, + FinancialFeb: 365, + FinancialApril: 365, + FinancialJuly: 365, + FinancialAug: 365, + FinancialSep: 365, + FinancialOct: 365, + FinancialNov: 365, + TwoYearly: 730, +} + +export const PERIOD_TYPES = Object.keys(PERIOD_TYPE_FREQUENCY_ORDER) diff --git a/src/modules/dataItemProfile/expressionItems.js b/src/modules/dataItemProfile/expressionItems.js deleted file mode 100644 index 5b77640a6..000000000 --- a/src/modules/dataItemProfile/expressionItems.js +++ /dev/null @@ -1,80 +0,0 @@ -export const OPERAND_DATA_ELEMENT = 'DATA_ELEMENT' -export const OPERAND_REPORTING_RATE = 'REPORTING_RATE' -export const OPERAND_INDICATOR = 'INDICATOR' -export const OPERAND_PROGRAM_INDICATOR = 'PROGRAM_INDICATOR' -export const OPERAND_PROGRAM_DATA_ELEMENT = 'PROGRAM_DATA_ELEMENT' -export const OPERAND_PROGRAM_ATTRIBUTE = 'PROGRAM_ATTRIBUTE' -export const OPERAND_CONSTANT = 'CONSTANT' -export const OPERAND_ORG_UNIT_GROUP = 'ORG_UNIT_GROUP' -export const OPERAND_DAYS = 'DAYS' -export const OPERAND_UNKNOWN = 'UNKNOWN' - -const OPERAND_BY_PREFIX = { - '#': OPERAND_DATA_ELEMENT, - R: OPERAND_REPORTING_RATE, - N: OPERAND_INDICATOR, - I: OPERAND_PROGRAM_INDICATOR, - D: OPERAND_PROGRAM_DATA_ELEMENT, - A: OPERAND_PROGRAM_ATTRIBUTE, - C: OPERAND_CONSTANT, - OUG: OPERAND_ORG_UNIT_GROUP, -} - -// Operands whose value depends on data collected in periods -export const PERIOD_LIMITING_OPERANDS = [ - OPERAND_DATA_ELEMENT, - OPERAND_REPORTING_RATE, - OPERAND_INDICATOR, -] - -/* An operand (`#{de.coc}`, `R{ds.REPORTING_RATE}`, `[days]`…) and the - * functions chained after it (`.periodOffset(-1)`, `.aggregationType(LAST)`) */ -const OPERAND_REGEX = - /(?:(#|[A-Z]+)\{([^}]*)\}|\[days\])((?:\.[a-zA-Z]+\([^)]*\))*)/g -const FUNCTION_REGEX = /\.([a-zA-Z]+)\(([^)]*)\)/g - -const parseFunctions = (chain) => - [...chain.matchAll(FUNCTION_REGEX)].map(([, name, arg]) => ({ - name, - arg: arg.trim(), - })) - -// The id of the object behind the operand: `de` in `#{de.coc.aoc}`, `ds` in `R{ds.METRIC}` -const getObjectId = (type, content) => - [OPERAND_DATA_ELEMENT, OPERAND_REPORTING_RATE].includes(type) - ? content.split('.')[0] - : content - -const toOperand = ([token, prefix, content, chain]) => { - const functions = parseFunctions(chain) - const aggregationType = functions.find( - ({ name }) => name === 'aggregationType' - )?.arg - - if (prefix === undefined) { - return { type: OPERAND_DAYS, token, functions } - } - - const type = OPERAND_BY_PREFIX[prefix] ?? OPERAND_UNKNOWN - // A disaggregation (de.coc, de.coc.aoc); a wildcard (de.*) is the whole element - const isDisaggregation = - type === OPERAND_DATA_ELEMENT && - content.includes('.') && - !content.includes('*') - - return { - type, - id: getObjectId(type, content), - ...(isDisaggregation && { operand: content }), - token, - functions, - ...(aggregationType && { aggregationType }), - } -} - -/** - * Every operand of an indicator or expression dimension item expression, in - * order, with the functions chained after it. - */ -export const getExpressionItems = (expression = '') => - [...(expression ?? '').matchAll(OPERAND_REGEX)].map(toOperand) diff --git a/src/modules/dataItemProfile/expressionOperands.js b/src/modules/dataItemProfile/expressionOperands.js new file mode 100644 index 000000000..88f89e0b8 --- /dev/null +++ b/src/modules/dataItemProfile/expressionOperands.js @@ -0,0 +1,101 @@ +import { + DIMENSION_TYPE_DATA_ELEMENT, + DIMENSION_TYPE_INDICATOR, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_INDICATOR, +} from '../dataTypes.js' +import { + DIMENSION_TYPE_REPORTING_RATE, + OPERAND_TYPE_CONSTANT, + OPERAND_TYPE_DAYS, + OPERAND_TYPE_ORG_UNIT_GROUP, + OPERAND_TYPE_UNKNOWN, +} from './constants.js' + +/* The full indicator and expression syntax (the library's parseExpression in + * modules/expressions.js reads only the #{} of calculations) */ +const OPERAND_TYPE_BY_PREFIX = { + '#': DIMENSION_TYPE_DATA_ELEMENT, + R: DIMENSION_TYPE_REPORTING_RATE, + N: DIMENSION_TYPE_INDICATOR, + I: DIMENSION_TYPE_PROGRAM_INDICATOR, + D: DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + A: DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + C: OPERAND_TYPE_CONSTANT, + OUG: OPERAND_TYPE_ORG_UNIT_GROUP, +} + +// An operand: `#{de.coc}`, `R{ds.REPORTING_RATE}`, `[days]`… +const OPERAND_REGEX = /(#|[A-Z]+)\{([^}]*)\}|\[days\]/g +// One function chained after it: `.periodOffset(-1)`, `.aggregationType(LAST)` +const FUNCTION_REGEX = /\.([a-zA-Z]+)\(([^)]*)\)/y + +// The functions chained at `position`, and where they end +const readFunctions = (expression, position) => { + const functions = [] + + FUNCTION_REGEX.lastIndex = position + + for ( + let match = FUNCTION_REGEX.exec(expression); + match; + match = FUNCTION_REGEX.exec(expression) + ) { + functions.push({ name: match[1], arg: match[2].trim() }) + position = FUNCTION_REGEX.lastIndex + } + + return { functions, end: position } +} + +/* The object to fetch for the operand: the data element of `#{de.coc.aoc}`, + * the data set of `R{ds.REPORTING_RATE}`, the whole content otherwise */ +const getOperandObjectId = (type, content) => + type === DIMENSION_TYPE_DATA_ELEMENT || + type === DIMENSION_TYPE_REPORTING_RATE + ? content.split('.')[0] + : content + +const toOperand = (expression, match) => { + const [operandToken, prefix, content] = match + const { functions, end } = readFunctions( + expression, + match.index + operandToken.length + ) + const token = expression.slice(match.index, end) + + if (prefix === undefined) { + return { type: OPERAND_TYPE_DAYS, token, functions } + } + + const type = OPERAND_TYPE_BY_PREFIX[prefix] ?? OPERAND_TYPE_UNKNOWN + // A disaggregation (de.coc, de.coc.aoc); a wildcard (de.*) is the whole element + const isDisaggregation = + type === DIMENSION_TYPE_DATA_ELEMENT && + content.includes('.') && + !content.includes('*') + const aggregationType = functions.find( + ({ name }) => name === 'aggregationType' + )?.arg + + return { + type, + id: getOperandObjectId(type, content), + ...(isDisaggregation && { operand: content }), + token, + functions, + ...(aggregationType && { aggregationType }), + } +} + +/** + * Every operand of an indicator or expression dimension item expression, in + * order: its type (a dimension item type, or a constant, org unit group, + * [days] or unknown operand), the id of the object behind it, and the + * functions chained after it. + */ +export const parseExpressionOperands = (expression) => + [...(expression ?? '').matchAll(OPERAND_REGEX)].map((match) => + toOperand(expression, match) + ) diff --git a/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js b/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js deleted file mode 100644 index 00c9bdedb..000000000 --- a/src/modules/dataItemProfile/getDataItemOrgUnitCompatibility.js +++ /dev/null @@ -1,320 +0,0 @@ -import { - COMPATIBILITY_FULL, - COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, - COMPATIBILITY_UNKNOWN, - OPERAND_REASONS, - REASON_PROFILE_UNKNOWN, - withOperandReason, -} from './compatibilityStatuses.js' -import { getOrgUnitTargets, readOrgUnitSelection } from './orgUnitSelection.js' -import { getSourceId, isPlacedAnywhere, isProgramSource } from './sources.js' - -// No data from some or all of the places -export const REASON_NOT_ASSIGNED = 'NOT_ASSIGNED' -export const REASON_BELOW_COLLECTION = 'BELOW_COLLECTION' -export const REASON_AGGREGATION_LEVEL = 'AGGREGATION_LEVEL' -// Full, but placed by another org unit than the program's: anywhere -export const REASON_ORG_UNIT_FIELD = 'ORG_UNIT_FIELD' -// Full, but collected at only some of the units -export const REASON_PARTLY_ASSIGNED = 'PARTLY_ASSIGNED' -// Can't be told -export const REASON_UNKNOWN_ORG_UNIT = 'UNKNOWN_ORG_UNIT' -export const REASON_EVENT_DATA = 'EVENT_DATA' - -export const ORG_UNIT_REASON_ORDER = [ - ...OPERAND_REASONS, - REASON_NOT_ASSIGNED, - REASON_BELOW_COLLECTION, - REASON_AGGREGATION_LEVEL, - REASON_PARTLY_ASSIGNED, - REASON_ORG_UNIT_FIELD, - REASON_UNKNOWN_ORG_UNIT, - REASON_EVENT_DATA, -] - -// Most severe first: an expression needs all its operands -const SEVERITY = [ - COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, - COMPATIBILITY_UNKNOWN, - COMPATIBILITY_FULL, -] - -const unionOfReasons = (results) => - ORG_UNIT_REASON_ORDER.filter((reason) => - results.some(({ reasons }) => reasons.includes(reason)) - ) - -const pickBy = (order, results) => - order - .map((status) => results.find((result) => result.status === status)) - .find(Boolean) - -const sumCoverage = (results) => { - const coverages = results.map(({ coverage }) => coverage).filter(Boolean) - - return coverages.length - ? { - assigned: coverages.reduce( - (sum, { assigned }) => sum + assigned, - 0 - ), - total: coverages.reduce((sum, { total }) => sum + total, 0), - level: Math.max(...coverages.map(({ level }) => level)), - } - : null -} - -/* Analytics nulls the levels up to each aggregation level for values entered - * below it (AggregationLevelsHelper): a value entered at `entryLevel` can't - * reach `level` when an aggregation level lies between them */ -const isStopped = (entryLevel, level, aggregationLevels) => - aggregationLevels.some( - (aggregationLevel) => - level <= aggregationLevel && aggregationLevel < entryLevel - ) - -/* One data set at one target (a unit, and the level asked under it), from - * its assignment counts: where data can be entered. Nothing is split down to - * lower levels, so data entered above the level asked can't fill it; below, - * it adds up, and the deepest level assigned says how much of the place it - * covers. A data set entered at the level asked elsewhere, but not here: - * NOT_ASSIGNED. Only above it: BELOW_COLLECTION. */ -const judgeDataSet = ({ - dataSetCounts, - assignedLevels = {}, - aggregationLevels = [], - totals, - level, -}) => { - const { byLevel = {}, ancestors = 0 } = dataSetCounts ?? {} - const levelsWith = (counts) => - Object.keys(counts) - .map(Number) - .filter((assignedLevel) => counts[assignedLevel] > 0) - const assignedHere = levelsWith(byLevel).filter( - (assignedLevel) => assignedLevel >= level - ) - const entryLevels = assignedHere.filter( - (entryLevel) => !isStopped(entryLevel, level, aggregationLevels) - ) - - if (assignedHere.length && !entryLevels.length) { - return { - status: COMPATIBILITY_NONE, - reasons: [REASON_AGGREGATION_LEVEL], - coverage: null, - } - } - - if (!entryLevels.length) { - const enteredHereElsewhere = levelsWith(assignedLevels).some( - (assignedLevel) => assignedLevel >= level - ) - const enteredAbove = - ancestors > 0 || - levelsWith(byLevel).some((assignedLevel) => assignedLevel < level) - - return { - status: COMPATIBILITY_NONE, - reasons: [ - enteredAbove && !enteredHereElsewhere - ? REASON_BELOW_COLLECTION - : REASON_NOT_ASSIGNED, - ], - coverage: null, - } - } - - const deepest = Math.max(...entryLevels) - const coverage = { - assigned: byLevel[deepest], - total: totals[deepest] ?? byLevel[deepest], - level: deepest, - } - - // Units it isn't assigned to don't collect it: nothing is left out - return { - status: COMPATIBILITY_FULL, - reasons: - coverage.assigned < coverage.total ? [REASON_PARTLY_ASSIGNED] : [], - coverage, - } -} - -// A program indicator placing values by another org unit fits any place -const PLACED_ANYWHERE = { - status: COMPATIBILITY_FULL, - reasons: [REASON_ORG_UNIT_FIELD], - coverage: null, -} - -// Values that exist but can't reach the level asked -const LEFT_OUT_REASONS = [REASON_BELOW_COLLECTION, REASON_AGGREGATION_LEVEL] - -const isLeftOut = ({ reasons }) => - reasons.some((reason) => LEFT_OUT_REASONS.includes(reason)) - -/* An element over its data sets. One not assigned there leaves nothing out; - * one whose values can't reach the level asked (entered above, or stopped by - * aggregation levels) leaves them out, so with another that fills the place, - * the value is partial. */ -const combineDataSets = (bySource) => { - const filling = bySource.filter( - ({ status }) => status === COMPATIBILITY_FULL - ) - const reasons = unionOfReasons(bySource) - const leftOut = bySource.some(isLeftOut) - - if (!filling.length) { - return { - status: COMPATIBILITY_NONE, - reasons: leftOut - ? reasons.filter((reason) => LEFT_OUT_REASONS.includes(reason)) - : [REASON_NOT_ASSIGNED], - coverage: null, - } - } - - return { - status: leftOut ? COMPATIBILITY_PARTIAL : COMPATIBILITY_FULL, - reasons: reasons.filter((reason) => reason !== REASON_NOT_ASSIGNED), - coverage: filling - .map(({ coverage }) => coverage) - .sort((a, b) => b.assigned / b.total - a.assigned / a.total)[0], - } -} - -/* The item's operands: each element over its data sets (where any of them - * is assigned), with its aggregation levels, each reporting rate (where its - * data set is), and each program (where it is assigned). */ -const getOperands = (profile) => { - const elements = new Map() - - profile.sources.forEach(({ elements: sourceElements }) => - sourceElements.forEach((element) => elements.set(element.id, element)) - ) - - return [ - ...[...elements.values()].map(({ id, aggregationLevels }) => ({ - sources: profile.sources.filter(({ elements: sourceElements }) => - sourceElements.some((element) => element.id === id) - ), - aggregationLevels, - })), - ...profile.sources - .filter((source) => source.reportingRate || isProgramSource(source)) - .map((source) => ({ sources: [source] })), - ] -} - -const judgeTarget = (operands, counts) => { - const results = operands.map(({ sources, aggregationLevels }) => { - const bySource = sources.map((source) => - isPlacedAnywhere(source) - ? PLACED_ANYWHERE - : judgeDataSet({ - dataSetCounts: counts.sources?.[getSourceId(source)], - assignedLevels: - counts.assignedLevels?.[getSourceId(source)], - aggregationLevels, - totals: counts.totals ?? {}, - level: counts.level, - }) - ) - return combineDataSets(bySource) - }) - const worst = pickBy(SEVERITY, results) - - return ( - worst && { - ...withOperandReason( - { ...worst, reasons: unionOfReasons(results) }, - operands.length - ), - coverage: worst.coverage, - } - ) -} - -const unknownResult = (id, reason) => ({ - id, - status: COMPATIBILITY_UNKNOWN, - reasons: [reason], - coverage: null, -}) - -const judgeItem = (item, { operands, boundaries, coverage }) => { - const targets = getOrgUnitTargets(item, boundaries, coverage) - - if (!targets) { - return unknownResult(item.id, REASON_UNKNOWN_ORG_UNIT) - } - - const countsOf = ({ key, unitId }) => coverage.counts[key ?? unitId] - // Boundaries a group has no member under add nothing - const results = targets - .filter( - (target) => - !target.group || countsOf(target)?.totals?.[target.level] > 0 - ) - .map((target) => - judgeTarget(operands, { - ...countsOf(target), - assignedLevels: coverage.assignedLevels, - level: target.level, - }) - ) - const worst = pickBy(SEVERITY, results) - - return { - id: item.id, - status: worst?.status ?? COMPATIBILITY_NONE, - reasons: worst ? unionOfReasons(results) : [REASON_NOT_ASSIGNED], - coverage: sumCoverage(results), - } -} - -/** - * Whether the places of an org unit selection suit the item, from where its - * data sets are assigned (fetchOrgUnitCoverage): one result per item of the - * selection, with the same statuses as for periods. Data entered above the - * level asked: none, BELOW_COLLECTION. Not assigned there: none, - * NOT_ASSIGNED. Stopped by the element's aggregation levels: none, - * AGGREGATION_LEVEL. Assigned to only some of the units at the deepest level - * entered: full, since the others don't collect it, with PARTLY_ASSIGNED and - * the counts (`coverage`). - * - * An element over several data sets is fully compatible where one is - * assigned, and partially when another's values can't reach the place: they - * are left out. A group is judged at each level its members are at, as the - * units under them add up. Event data and unknown units can't be told. - */ -export const getDataItemOrgUnitCompatibility = ( - profile, - orgUnits = [], - coverage -) => { - const { items, boundaries } = readOrgUnitSelection(orgUnits) - - if (profile.unknown) { - return items.map(({ id }) => unknownResult(id, REASON_PROFILE_UNKNOWN)) - } - - if (!profile.sources.length) { - return items.map(({ id }) => unknownResult(id, REASON_EVENT_DATA)) - } - - if (!coverage) { - return items.map(({ id }) => unknownResult(id, REASON_UNKNOWN_ORG_UNIT)) - } - - return items.map((item) => - judgeItem(item, { - operands: getOperands(profile), - boundaries, - coverage, - }) - ) -} diff --git a/src/modules/dataItemProfile/getDataItemProfile.js b/src/modules/dataItemProfile/getDataItemProfile.js index 886ee98e7..4ebbcf794 100644 --- a/src/modules/dataItemProfile/getDataItemProfile.js +++ b/src/modules/dataItemProfile/getDataItemProfile.js @@ -1,375 +1,31 @@ -import { - DIMENSION_TYPE_DATA_ELEMENT, - DIMENSION_TYPE_DATA_ELEMENT_OPERAND, - DIMENSION_TYPE_EVENT_DATA_ITEM, - DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, - DIMENSION_TYPE_INDICATOR, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, - DIMENSION_TYPE_PROGRAM_INDICATOR, -} from '../dataTypes.js' -import { - OPERAND_DATA_ELEMENT, - OPERAND_INDICATOR, - OPERAND_PROGRAM_ATTRIBUTE, - OPERAND_PROGRAM_DATA_ELEMENT, - OPERAND_PROGRAM_INDICATOR, - OPERAND_REPORTING_RATE, - OPERAND_UNKNOWN, - getExpressionItems, -} from './expressionItems.js' -import { withOrgUnitSide } from './orgUnitSide.js' -import { aggregatesInto } from './periodTypeRelations.js' -import { PERIOD_TYPES, isPeriodType, sortPeriodTypes } from './periodTypes.js' -import { isBoundedOrgUnitField } from './sources.js' - -export const DIMENSION_TYPE_REPORTING_RATE = 'REPORTING_RATE' - -export const PERIOD_AGGREGATION_AVERAGE = 'AVERAGE' -export const PERIOD_AGGREGATION_FIRST = 'FIRST' -export const PERIOD_AGGREGATION_LAST = 'LAST' - -/* How each aggregation type aggregates over time, when it differs from the - * type itself (dhis2-core AnalyticsAggregationType.fromAggregationType) */ -const PERIOD_AGGREGATION_BY_AGGREGATION_TYPE = { - AVERAGE_SUM_ORG_UNIT: 'AVERAGE', - LAST_AVERAGE_ORG_UNIT: 'LAST', - LAST_LAST_ORG_UNIT: 'LAST', - LAST_IN_PERIOD_AVERAGE_ORG_UNIT: 'LAST_IN_PERIOD', - FIRST_AVERAGE_ORG_UNIT: 'FIRST', - FIRST_FIRST_ORG_UNIT: 'FIRST', - MAX_SUM_ORG_UNIT: 'MAX', - MIN_SUM_ORG_UNIT: 'MIN', -} - -export const getPeriodAggregationType = (aggregationType) => - PERIOD_AGGREGATION_BY_AGGREGATION_TYPE[aggregationType] ?? aggregationType - -export const NOT_AGGREGATABLE_AGGREGATION_TYPES = ['NONE'] - -export const REASON_MISSING_METADATA = 'MISSING_METADATA' -export const REASON_NO_DATA_SET = 'NO_DATA_SET' -export const REASON_NOT_AGGREGATABLE = 'NOT_AGGREGATABLE' -export const REASON_UNKNOWN_OPERAND = 'UNKNOWN_OPERAND' -export const REASON_UNKNOWN_PERIOD_TYPE = 'UNKNOWN_PERIOD_TYPE' -export const REASON_UNSUPPORTED_ITEM_TYPE = 'UNSUPPORTED_ITEM_TYPE' - -/* Event and tracker items named by their program and an element or - * attribute: program.element, program.element.option */ -const PROGRAM_PREFIXED_ITEM_TYPES = [ - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, - DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE, - DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, - DIMENSION_TYPE_EVENT_DATA_ITEM, -] - -const createCollector = () => ({ - sources: new Map(), - reasons: [], - visited: new Set(), -}) - -const checkPeriodType = (collector, id, periodType) => { - if (!isPeriodType(periodType)) { - collector.reasons.push({ - code: REASON_UNKNOWN_PERIOD_TYPE, - id, - periodType, - }) - } -} - -// One source per data set; an element in no data set gets a source of its own -const getSource = (collector, dataSet, elementId) => { - const key = dataSet - ? `dataSet:${dataSet.id ?? dataSet.periodType}` - : `element:${elementId}` - - if (!collector.sources.has(key)) { - collector.sources.set(key, { - dataSet: dataSet - ? { id: dataSet.id, periodType: dataSet.periodType } - : null, - elements: [], - reportingRate: false, - }) - } - - return collector.sources.get(key) -} - -const addElementToSource = (source, element) => { - const isListed = source.elements.some( - ({ id, operand, aggregationType }) => - id === element.id && - operand === element.operand && - aggregationType === element.aggregationType - ) - - if (!isListed) { - source.elements.push(element) - } -} - -const addDataElement = ( - collector, - metadata, - { id, operand, aggregationType: aggregationTypeOverride } -) => { - const dataElement = metadata.dataElements?.[id] - - if (!dataElement) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - const aggregationType = - aggregationTypeOverride ?? dataElement.aggregationType - const dataSets = dataElement.dataSets ?? [] - /* `operand`: the disaggregation analytics is asked for (de.coc), if any. - * `aggregationLevels`: the org unit levels values entered below stop at */ - const element = { - id, - ...(operand && { operand }), - aggregationType, - periodAggregationType: getPeriodAggregationType(aggregationType), - ...(dataElement.aggregationLevels?.length && { - aggregationLevels: dataElement.aggregationLevels, - }), - } - - if (NOT_AGGREGATABLE_AGGREGATION_TYPES.includes(aggregationType)) { - collector.reasons.push({ code: REASON_NOT_AGGREGATABLE, id }) - } - - if (!dataSets.length) { - collector.reasons.push({ code: REASON_NO_DATA_SET, id }) - addElementToSource(getSource(collector, null, id), element) - } - - dataSets.forEach((dataSet) => { - checkPeriodType(collector, id, dataSet.periodType) - addElementToSource(getSource(collector, dataSet), element) - }) -} - -/* A program is a source of its own: events and enrollments are placed by - * their own dates, so it has no period type, and by the org units it's - * assigned to */ -const addProgram = (collector, metadata, { id, orgUnitField }) => { - if (!metadata.programs?.[id]) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - // Values placed by another org unit than the program's are a source of their own - const placedAnywhere = !isBoundedOrgUnitField(orgUnitField) - const key = placedAnywhere - ? `program:${id}:${orgUnitField}` - : `program:${id}` - - if (!collector.sources.has(key)) { - collector.sources.set(key, { - dataSet: null, - program: { id }, - ...(placedAnywhere && { orgUnitField }), - elements: [], - reportingRate: false, - }) - } -} - -const addProgramIndicator = (collector, metadata, id) => { - const { program, orgUnitField } = metadata.programIndicators?.[id] ?? {} - - if (!program) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - addProgram(collector, metadata, { id: program, orgUnitField }) -} - -// The program of program.element or program.attribute, if the id names one -const addPrefixedProgram = (collector, metadata, id) => { - if (id.includes('.')) { - addProgram(collector, metadata, { id: id.split('.')[0] }) - } -} - -const addDataSet = (collector, metadata, id) => { - const periodType = metadata.dataSets?.[id]?.periodType - - if (!periodType) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - checkPeriodType(collector, id, periodType) - getSource(collector, { id, periodType }).reportingRate = true -} - -const addExpression = (collector, metadata, expression) => { - getExpressionItems(expression).forEach((operand) => { - switch (operand.type) { - case OPERAND_DATA_ELEMENT: - addDataElement(collector, metadata, operand) - break - case OPERAND_REPORTING_RATE: - addDataSet(collector, metadata, operand.id) - break - case OPERAND_INDICATOR: - addIndicator(collector, metadata, operand.id) - break - case OPERAND_PROGRAM_INDICATOR: - addProgramIndicator(collector, metadata, operand.id) - break - case OPERAND_PROGRAM_DATA_ELEMENT: - case OPERAND_PROGRAM_ATTRIBUTE: - addPrefixedProgram(collector, metadata, operand.id) - break - case OPERAND_UNKNOWN: - collector.reasons.push({ - code: REASON_UNKNOWN_OPERAND, - token: operand.token, - }) - break - default: - // Constants, org unit groups and days have no source - } - }) -} - -const addIndicator = (collector, metadata, id) => { - // Nested indicators (N{}) can refer to each other - if (collector.visited.has(id)) { - return - } - collector.visited.add(id) - - const indicator = metadata.indicators?.[id] - - if (!indicator) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - addExpression(collector, metadata, indicator.numerator) - addExpression(collector, metadata, indicator.denominator) -} - -const addExpressionDimensionItem = (collector, metadata, id) => { - const expression = metadata.expressionDimensionItems?.[id]?.expression - - if (expression === undefined) { - collector.reasons.push({ code: REASON_MISSING_METADATA, id }) - return - } - - addExpression(collector, metadata, expression) -} - -const collectSources = ({ id, dimensionItemType }, metadata) => { - const collector = createCollector() - - switch (dimensionItemType) { - case DIMENSION_TYPE_DATA_ELEMENT: - case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: - addDataElement(collector, metadata, { - id: id.split('.')[0], - ...(id.includes('.') && { operand: id }), - }) - break - case DIMENSION_TYPE_REPORTING_RATE: - addDataSet(collector, metadata, id.split('.')[0]) - break - case DIMENSION_TYPE_INDICATOR: - addIndicator(collector, metadata, id) - break - case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: - addExpressionDimensionItem(collector, metadata, id) - break - case DIMENSION_TYPE_PROGRAM_INDICATOR: - addProgramIndicator(collector, metadata, id) - break - default: - if (PROGRAM_PREFIXED_ITEM_TYPES.includes(dimensionItemType)) { - addPrefixedProgram(collector, metadata, id) - } else { - collector.reasons.push({ - code: REASON_UNSUPPORTED_ITEM_TYPE, - id, - dimensionItemType, - }) - } - } - - return collector -} - -/* The shortest query type that every type aggregates into: the longest of - * them when they nest, the next type up when two have the same order (Monday - * and Wednesday weeks: BiWeekly) */ -const getFinestQueryPeriodType = (periodTypes) => - sortPeriodTypes(PERIOD_TYPES).find((queryPeriodType) => - periodTypes.every((periodType) => - aggregatesInto(periodType, queryPeriodType) - ) - ) ?? null - -const unique = (values) => [...new Set(values)] - -// Averaged values are repeated into any period: they never go missing -export const isAveraged = ({ periodAggregationType }) => - periodAggregationType === PERIOD_AGGREGATION_AVERAGE - -// The source's period type, or null when it has no data set or an unknown type -export const getSourcePeriodType = ({ dataSet }) => - isPeriodType(dataSet?.periodType) ? dataSet.periodType : null - -const getPeriodTypes = (sources) => - sortPeriodTypes(unique(sources.map(getSourcePeriodType).filter(Boolean))) - -/* The profile's period side. `finest` is the shortest type at which every - * value is measured directly: shorter ones get averaged or carried values, or - * none (see getDataItemProfileCompatibility). */ -export const getPeriodSide = (sources) => { - const types = getPeriodTypes(sources) - - return { - types, - finest: types.length ? getFinestQueryPeriodType(types) : null, - mixed: types.length > 1, - } -} +import { addAssignedOrgUnitLevels } from './profile/assignedOrgUnitLevels.js' +import { getAssignedPeriodTypes } from './profile/assignedPeriodTypes.js' +import { collectSources } from './profile/collectSources.js' /** - * The profile of a data item, from its metadata: how and where it is - * collected. `sources` has one entry per data set it is collected in, with - * the item's elements in it (a reporting rate is its data set). The `period` - * side says which period types they are collected at, and `period.finest` - * the shortest type at which every value is measured directly, or null when - * nothing is collected by period (event data). Missing metadata makes the - * item `unknown`, with the `reasons`; it is never guessed. + * The profile of a data item ({ id, dimensionItemType }), from its metadata + * (fetchDataItemProfileMetadata): where its data comes from. * - * With the data sets' assigned units per level in the metadata - * (`dataSetOrgUnitLevels`, fetched by default), the profile also has an - * `orgUnit` side: the levels its data sets are assigned at (withOrgUnitSide). + * - `sources`: one per data set it is assigned to, with the item's elements + * in it (a reporting rate is its data set), and one per program. + * - `assignedPeriodTypes`: the period types of those data sets + * (getAssignedPeriodTypes). + * - `assignedOrgUnitLevels`: the org unit levels its data sets and programs + * are assigned at (getAssignedOrgUnitLevels), when the metadata has the + * counts (`assignedOrgUnitCounts`, fetched by default). + * - `unknown` and `reasons`: missing metadata makes the item unknown; it is + * never guessed. */ export const getDataItemProfile = (item, metadata = {}) => { - const collector = collectSources(item, metadata) - const sources = [...collector.sources.values()] + const { sources, reasons } = collectSources(item, metadata) const profile = { sources, - unknown: collector.reasons.length > 0, - reasons: collector.reasons, - period: getPeriodSide(sources), + unknown: reasons.length > 0, + reasons, + assignedPeriodTypes: getAssignedPeriodTypes(sources), } - return metadata.dataSetOrgUnitLevels - ? withOrgUnitSide(profile, metadata.dataSetOrgUnitLevels) + return metadata.assignedOrgUnitCounts + ? addAssignedOrgUnitLevels(profile, metadata.assignedOrgUnitCounts) : profile } diff --git a/src/modules/dataItemProfile/getDataItemProfileCompatibility.js b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js index a4c022ce4..8acc86891 100644 --- a/src/modules/dataItemProfile/getDataItemProfileCompatibility.js +++ b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js @@ -1,398 +1,59 @@ -import { getCarriedSource, getYearsTouched } from './carriedValues.js' -import { - COMPATIBILITY_FULL, - COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, - COMPATIBILITY_UNKNOWN, - OPERAND_REASONS, - REASON_PROFILE_UNKNOWN, - withOperandReason, -} from './compatibilityStatuses.js' -import { - getDataItemOrgUnitCompatibility, - ORG_UNIT_REASON_ORDER, -} from './getDataItemOrgUnitCompatibility.js' -import { - PERIOD_AGGREGATION_AVERAGE, - PERIOD_AGGREGATION_FIRST, - PERIOD_AGGREGATION_LAST, - getSourcePeriodType, -} from './getDataItemProfile.js' -import { - aggregatesInto, - getFixedPeriodOfTypeByDate, - getPeriodDates, - periodNestsIn, -} from './periodTypeRelations.js' -import { - getCandidatePeriodTypes, - getFrequencyOrder, - getPeriodTypeOfPeriodId, - isPeriodTypeSupported, -} from './periodTypes.js' +import { combineResults } from './compatibility/combineResults.js' +import { getDataItemProfileOrgUnitCompatibility } from './compatibility/getDataItemProfileOrgUnitCompatibility.js' +import { getDataItemProfilePeriodCompatibility } from './compatibility/getDataItemProfilePeriodCompatibility.js' +import { getSourceId } from './sources.js' -export { - COMPATIBILITY_FULL, - COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, - COMPATIBILITY_UNKNOWN, - REASON_OPERAND_EMPTY, - REASON_OPERAND_PARTIAL, - REASON_PROFILE_UNKNOWN, -} from './compatibilityStatuses.js' - -// A value, but not measured for the period -export const REASON_AVERAGED = 'AVERAGED' -export const REASON_CARRIED = 'CARRIED' -// No real value from some or all of the data -export const REASON_SHORTER = 'SHORTER' -export const REASON_OTHER_TYPE = 'OTHER_TYPE' -export const REASON_REPORTING_RATE = 'REPORTING_RATE' -export const REASON_NOTHING_TO_CARRY = 'NOTHING_TO_CARRY' -// Can't tell -export const REASON_UNKNOWN_PERIOD = 'UNKNOWN_PERIOD' -export const REASON_SETTING_MISSING = 'SETTING_MISSING' -export const REASON_UNSUPPORTED_VERSION = 'UNSUPPORTED_VERSION' - -const REASON_ORDER = [ - ...OPERAND_REASONS, - REASON_SHORTER, - REASON_OTHER_TYPE, - REASON_REPORTING_RATE, - REASON_NOTHING_TO_CARRY, - REASON_AVERAGED, - REASON_CARRIED, - REASON_PROFILE_UNKNOWN, - REASON_UNKNOWN_PERIOD, - REASON_SETTING_MISSING, - REASON_UNSUPPORTED_VERSION, - ...ORG_UNIT_REASON_ORDER.filter( - (reason) => !OPERAND_REASONS.includes(reason) - ), -] - -// Most severe first -const SEVERITY = [ - COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, - COMPATIBILITY_UNKNOWN, - COMPATIBILITY_FULL, -] - -const result = (status, reasons = []) => ({ status, reasons }) - -const getMostSevere = (statuses) => - SEVERITY.find((status) => statuses.includes(status)) ?? null - -const unionOfReasons = (results) => - REASON_ORDER.filter((reason) => - results.some(({ reasons }) => reasons.includes(reason)) - ) - -// The most severe status, with every reason -const combine = (results) => - result( - getMostSevere(results.map(({ status }) => status)) ?? - COMPATIBILITY_FULL, - unionOfReasons(results) - ) - -const getMissingReason = (dataPeriodType, queryPeriodType) => - getFrequencyOrder(queryPeriodType) < getFrequencyOrder(dataPeriodType) - ? REASON_SHORTER - : REASON_OTHER_TYPE - -/* FIRST and LAST data, by analytics' carry rule (carriedValues.js): the - * value of a data period inside the period, of one before it, or none. It can - * only be told for fixed periods in a selection of fixed periods, since every - * period of the request decides which data periods count. */ -const getFirstOrLastResult = (element, dataPeriodType, query) => { - const canDate = - query.dates && - query.years && - getFixedPeriodOfTypeByDate( - dataPeriodType, - query.dates.endDate, - query.calendar - ) - - if (!canDate) { - const carries = - element.periodAggregationType === PERIOD_AGGREGATION_FIRST || - !aggregatesInto(dataPeriodType, query.periodType) - - return carries - ? result(COMPATIBILITY_FULL, [REASON_CARRIED]) - : result(COMPATIBILITY_FULL) - } - - const source = getCarriedSource({ - periodAggregationType: element.periodAggregationType, - periodType: dataPeriodType, - dates: query.dates, - years: query.years, - calendar: query.calendar, - }) - - if (!source) { - return result(COMPATIBILITY_NONE, [REASON_NOTHING_TO_CARRY]) - } - - return source.startDate >= query.dates.startDate - ? result(COMPATIBILITY_FULL) - : result(COMPATIBILITY_FULL, [REASON_CARRIED]) -} - -/* One element of one data set, asked for one query. When the data can't add - * up into the period, averaged values are repeated into it, and other data - * gives none. FIRST and LAST follow their own rule. */ -const getElementResult = (element, dataPeriodType, query) => { - if ( - element.periodAggregationType === PERIOD_AGGREGATION_FIRST || - element.periodAggregationType === PERIOD_AGGREGATION_LAST - ) { - return getFirstOrLastResult(element, dataPeriodType, query) - } - - if (aggregatesInto(dataPeriodType, query.periodType)) { - return result(COMPATIBILITY_FULL) - } - - return element.periodAggregationType === PERIOD_AGGREGATION_AVERAGE - ? result(COMPATIBILITY_FULL, [REASON_AVERAGED]) - : result(COMPATIBILITY_NONE, [ - getMissingReason(dataPeriodType, query.periodType), - ]) -} - -// A reporting rate asked for a shorter period gives a meaningless value -const getReportingRateResult = (dataPeriodType, queryPeriodType) => - aggregatesInto(dataPeriodType, queryPeriodType) - ? result(COMPATIBILITY_FULL) - : result(COMPATIBILITY_NONE, [REASON_REPORTING_RATE]) - -const getSourceResult = (source, query) => { - const dataPeriodType = getSourcePeriodType(source) - const results = source.elements.map((element) => - getElementResult(element, dataPeriodType, query) - ) - - if (source.reportingRate) { - results.push(getReportingRateResult(dataPeriodType, query.periodType)) - } - - return combine(results) -} - -/* The values of one element over its data sets add up: some missing is - * partial */ -const combineDataSets = (results) => { - const statuses = results.map(({ status }) => status) - const reasons = unionOfReasons(results) - - if (statuses.every((status) => status === COMPATIBILITY_NONE)) { - return result(COMPATIBILITY_NONE, reasons) - } - - return statuses.includes(COMPATIBILITY_NONE) - ? result(COMPATIBILITY_PARTIAL, reasons) - : result(COMPATIBILITY_FULL, reasons) -} - -/* The item's operands: each element over its data sets, and each reporting - * rate. An expression needs them all: the most severe one decides. */ -const getItemResult = (profile, query) => { - const elements = new Map() - const operands = [] - - profile.sources.forEach((source) => { - const dataPeriodType = getSourcePeriodType(source) - - source.elements.forEach((element) => { - const key = `${element.id}:${element.aggregationType}` - const results = elements.get(key) ?? [] - - results.push(getElementResult(element, dataPeriodType, query)) - elements.set(key, results) - }) - - if (source.reportingRate) { - operands.push( - getReportingRateResult(dataPeriodType, query.periodType) - ) - } - }) - - elements.forEach((results) => operands.push(combineDataSets(results))) - - return withOperandReason(combine(operands), operands.length) -} - -const isSameResult = (a, b) => - a.status === b.status && a.reasons.join() === b.reasons.join() - -/* A relative period can be of several types: a result holds only when they - * all agree. A type the server version can't answer gives unknown. */ -const agreeOn = (queries, getResult) => { - const results = queries.map((query) => - query.supported - ? getResult(query) - : result(COMPATIBILITY_UNKNOWN, [REASON_UNSUPPORTED_VERSION]) - ) - - return results.every((candidate) => isSameResult(candidate, results[0])) - ? results[0] - : result(COMPATIBILITY_UNKNOWN, [REASON_SETTING_MISSING]) -} - -// Whether the period starts and ends on the edges of the data's own periods -const getAlignsWithData = (profile, { periodType, dates, calendar }) => { - const dataPeriodTypes = profile.sources - .map(getSourcePeriodType) - .filter((dataPeriodType) => aggregatesInto(dataPeriodType, periodType)) - - if (!dates || !dataPeriodTypes.length) { - return null - } - - const aligned = dataPeriodTypes.map((dataPeriodType) => - periodNestsIn(dates, dataPeriodType, calendar) - ) - - if (aligned.includes(false)) { - return false - } - - return aligned.includes(null) ? null : true -} - -const getDataSetId = ({ dataSet }) => dataSet?.id ?? null - -/* The calendar years the selection's periods touch, as one request would, or - * null when a period has no dates (a relative period, a period type) */ -const getSelectionYears = (periods, calendar) => { - const dates = periods.map((period) => - getPeriodTypeOfPeriodId(period) - ? getPeriodDates(period, calendar) - : null - ) - - if (!dates.length || dates.includes(null)) { - return null - } - - return [...new Set(dates.flatMap(getYearsTouched))].sort((a, b) => a - b) -} - -const getUnknownPeriodResult = (profile, { period, periodTypes, reason }) => ({ - id: period, - periodTypes, - ...result(COMPATIBILITY_UNKNOWN, [reason]), - alignsWithData: null, - sources: profile.sources.map((source) => ({ - dataSetId: getDataSetId(source), - ...result(COMPATIBILITY_UNKNOWN, [reason]), - })), -}) - -const getPeriodResult = (profile, period, options) => { - const periodTypes = getCandidatePeriodTypes(period, options) - - if (profile.unknown) { - return getUnknownPeriodResult(profile, { - period, - periodTypes, - reason: REASON_PROFILE_UNKNOWN, - }) - } - - if (!periodTypes.length) { - return getUnknownPeriodResult(profile, { - period, - periodTypes, - reason: REASON_UNKNOWN_PERIOD, - }) - } - - const dates = getPeriodTypeOfPeriodId(period) - ? getPeriodDates(period, options.calendar) - : null - const queries = periodTypes.map((periodType) => ({ - periodType, - dates, - years: options.selectionYears, - calendar: options.calendar, - supported: isPeriodTypeSupported(periodType, options.serverVersion), - })) - - return { - id: period, - periodTypes, - ...agreeOn(queries, (query) => getItemResult(profile, query)), - alignsWithData: - queries.length === 1 - ? getAlignsWithData(profile, queries[0]) - : null, - sources: profile.sources.map((source) => ({ - dataSetId: getDataSetId(source), - ...agreeOn(queries, (query) => getSourceResult(source, query)), - })), - } -} +const NO_RESULT = { status: null, reasons: [] } /** - * Whether a selection suits a data item, from its getDataItemProfile: for - * each period, whether analytics will return the item's values. + * Whether a selection suits a data item, from its profile (getDataItemProfile): + * whether analytics will return all of the item's values for these periods + * and org units. * - * The compatibility status is `full`, `partial`, `none` or `unknown`: - * compatible with all, some or none of the item's data sets. `reasons` say - * why, and on a full result whether values are averaged or carried - * rather than measured for the period. Results are given per period, per - * source (aligned with `profile.sources`) and overall (the most severe, with - * every reason). + * The status is `full`, `partial`, `none` or `unknown`: compatible with all, + * some or none of the item's data sets and programs that collect for the + * selection. `reasons` say why, and on a full result whether values are + * repeated or taken from an earlier period rather than added up for it. * - * `selection.periods` are fixed ids, relative ids or period types. `options` - * sets the type of relative weeks and financial years (`weeklyPeriodType`, - * `financialYearPeriodType`), the `calendar` for dates, and the - * `serverVersion` ({ major, minor }), since some versions can't answer some - * period types. The periods are taken as one request: for FIRST and LAST data, - * the years they touch decide which data periods count (other items of the - * request, like a `.periodOffset()` operand, can add years and aren't seen). + * - `periods`: getDataItemProfilePeriodCompatibility, one result per period. + * - `orgUnits` (DV's org unit items): getDataItemProfileOrgUnitCompatibility, + * one result per selection item, from `options.orgUnitCoverage` + * (fetchOrgUnitCoverage). Given only when org units are asked. + * - `sources`: each source over the periods (aligned with `profile.sources`). + * - Overall: the most severe status, with every reason. * - * `selection.orgUnits` are DV's org unit items (unit ids, LEVEL-n, the - * user's units), judged from `options.orgUnitCoverage` (fetchOrgUnitCoverage) - * by getDataItemOrgUnitCompatibility: one result each, in `orgUnits`. Periods - * and places are judged apart: a data set assigned to some places only, at - * another period type than the others, isn't judged by place yet. + * Periods and org units are judged apart: a data set assigned to some org + * units only, at another period type than the others, isn't judged per org + * unit. + * `options` are passed to the period check (relative period settings, + * calendar, server version). */ export const getDataItemProfileCompatibility = ( profile, { periods = [], orgUnits = [] } = {}, - options = {} + { orgUnitCoverage, ...options } = {} ) => { - const selectionYears = getSelectionYears(periods, options.calendar) - const results = periods.map((period) => - getPeriodResult(profile, period, { ...options, selectionYears }) - ) + const periodResults = getDataItemProfilePeriodCompatibility(profile, { + periods, + ...options, + }) const orgUnitResults = orgUnits.length - ? getDataItemOrgUnitCompatibility( - profile, + ? getDataItemProfileOrgUnitCompatibility(profile, { orgUnits, - options.orgUnitCoverage - ) + coverage: orgUnitCoverage, + }) : [] - const all = [...results, ...orgUnitResults] - const overall = all.length ? combine(all) : { status: null, reasons: [] } + const all = [...periodResults, ...orgUnitResults] return { - ...overall, + ...(all.length ? combineResults(all) : NO_RESULT), sources: profile.sources.map((source, i) => ({ - dataSetId: getDataSetId(source), - ...(results.length - ? combine(results.map(({ sources }) => sources[i])) - : { status: null, reasons: [] }), + sourceId: getSourceId(source), + ...(periodResults.length + ? combineResults(periodResults.map(({ sources }) => sources[i])) + : NO_RESULT), })), - periods: results, + periods: periodResults, ...(orgUnits.length && { orgUnits: orgUnitResults }), } } diff --git a/src/modules/dataItemProfile/orgUnitSelection.js b/src/modules/dataItemProfile/orgUnitSelection.js deleted file mode 100644 index 4250c4b06..000000000 --- a/src/modules/dataItemProfile/orgUnitSelection.js +++ /dev/null @@ -1,160 +0,0 @@ -export const ORG_UNIT_ITEM_UNIT = 'UNIT' -export const ORG_UNIT_ITEM_LEVEL = 'LEVEL' -export const ORG_UNIT_ITEM_GROUP = 'GROUP' -export const ORG_UNIT_ITEM_USER = 'USER' -export const ORG_UNIT_ITEM_UNKNOWN = 'UNKNOWN' - -// How many levels below the user's units each user item reaches -const USER_ITEM_DEPTHS = { - USER_ORGUNIT: 0, - USER_ORGUNIT_CHILDREN: 1, - USER_ORGUNIT_GRANDCHILDREN: 2, -} - -const UID = /^[a-zA-Z][a-zA-Z0-9]{10}$/ - -/** - * What an org unit dimension item is, as DV saves it: a unit id, LEVEL-n - * (a number, or a level id), OU_GROUP-id, or one of the user's units - * (USER_ORGUNIT, its children or grandchildren). - */ -export const parseOrgUnitItem = (id) => { - if (id in USER_ITEM_DEPTHS) { - return { id, kind: ORG_UNIT_ITEM_USER, depth: USER_ITEM_DEPTHS[id] } - } - - if (id.startsWith('LEVEL-')) { - const level = id.slice('LEVEL-'.length) - - return { - id, - kind: ORG_UNIT_ITEM_LEVEL, - level: /^\d+$/.test(level) ? Number(level) : level, - } - } - - if (id.startsWith('OU_GROUP-')) { - return { id, kind: ORG_UNIT_ITEM_GROUP, group: id.slice(9) } - } - - return UID.test(id) - ? { id, kind: ORG_UNIT_ITEM_UNIT } - : { id, kind: ORG_UNIT_ITEM_UNKNOWN } -} - -const isBoundedKind = ({ kind }) => - kind === ORG_UNIT_ITEM_LEVEL || kind === ORG_UNIT_ITEM_GROUP - -/** - * A selection as analytics reads it: with a level or a group in it, the - * units are boundaries (districts in Bo), not items of their own. Gives the - * `items` to judge and the `boundaries` (unit ids). - */ -export const readOrgUnitSelection = (orgUnits = []) => { - const parsed = orgUnits.map(parseOrgUnitItem) - const bounded = parsed.some(isBoundedKind) - const units = parsed.filter(({ kind }) => kind === ORG_UNIT_ITEM_UNIT) - - return { - items: bounded - ? parsed.filter(({ kind }) => kind !== ORG_UNIT_ITEM_UNIT) - : parsed, - boundaries: bounded ? units.map(({ id }) => id) : [], - } -} - -/* What a selection needs counted: its units, the roots (a level with no - * boundary), the user's units, and its groups */ -export const getUnitsToCount = (orgUnits = []) => { - const parsed = orgUnits.map(parseOrgUnitItem) - const ofKind = (kind) => parsed.filter((item) => item.kind === kind) - - return { - unitIds: ofKind(ORG_UNIT_ITEM_UNIT).map(({ id }) => id), - needsRoots: - ofKind(ORG_UNIT_ITEM_LEVEL).length > 0 && - !ofKind(ORG_UNIT_ITEM_UNIT).length, - needsUser: ofKind(ORG_UNIT_ITEM_USER).length > 0, - groupIds: [ - ...new Set(ofKind(ORG_UNIT_ITEM_GROUP).map(({ group }) => group)), - ], - } -} - -// Where the counts of a group's members at one level, under a boundary, are kept -export const getGroupCountsKey = (group, level, boundary) => - `${group}:${level}:${boundary ?? ''}` - -/* A group's members at each level they are at, under each boundary at or - * above it: analytics keeps the members inside the boundaries */ -const getGroupTargets = (group, boundaries, { units, groups }) => { - const memberLevels = groups?.[group] - const within = boundaries.length ? boundaries : [null] - - if (!memberLevels || boundaries.some((unitId) => !units[unitId])) { - return null - } - - return Object.keys(memberLevels) - .map(Number) - .filter((level) => memberLevels[level] > 0) - .flatMap((level) => - within - .filter((unitId) => !unitId || units[unitId].level <= level) - .map((unitId) => ({ - key: getGroupCountsKey(group, level, unitId), - level, - group, - })) - ) -} - -const getLevelNumber = (level, levels) => - typeof level === 'number' - ? level - : levels.find(({ id }) => id === level)?.level ?? null - -/** - * The places an item covers, each as a unit and the level asked under it: - * a unit at its own level, LEVEL-n at level n under each boundary (or under - * the roots), the user's units at their level plus the item's depth. A - * group gives its members at each level, under each boundary, kept by `key` - * (getGroupCountsKey). Null when it can't be told: an unknown id or level, - * or a unit or group whose counts aren't loaded. - */ -export const getOrgUnitTargets = (item, boundaries, coverage) => { - const { units, roots = [], userUnits, levels = [] } = coverage - const unitTarget = (unitId, depth = 0) => - units[unitId] && { unitId, level: units[unitId].level + depth } - - switch (item.kind) { - case ORG_UNIT_ITEM_UNIT: { - const target = unitTarget(item.id) - - return target ? [target] : null - } - case ORG_UNIT_ITEM_LEVEL: { - const level = getLevelNumber(item.level, levels) - const within = boundaries.length ? boundaries : roots - - if (!level || within.some((unitId) => !units[unitId])) { - return null - } - - return within - .filter((unitId) => units[unitId].level <= level) - .map((unitId) => ({ unitId, level })) - } - case ORG_UNIT_ITEM_USER: { - const targets = (userUnits ?? []).map((unitId) => - unitTarget(unitId, item.depth) - ) - - return userUnits && !targets.includes(undefined) ? targets : null - } - case ORG_UNIT_ITEM_GROUP: - return getGroupTargets(item.group, boundaries, coverage) - default: - return null - } -} diff --git a/src/modules/dataItemProfile/orgUnitSide.js b/src/modules/dataItemProfile/orgUnitSide.js deleted file mode 100644 index 53322d678..000000000 --- a/src/modules/dataItemProfile/orgUnitSide.js +++ /dev/null @@ -1,48 +0,0 @@ -import { getSourceId, isPlacedAnywhere } from './sources.js' - -const levelsOf = (orgUnitLevels = {}) => - Object.keys(orgUnitLevels) - .map(Number) - .filter((level) => orgUnitLevels[level] > 0) - -/** - * The profile's org unit side, from its sources' `orgUnitLevels`: the levels - * its data sets are assigned at, deepest first, the deepest (`entryLevel`, - * where most data is entered), and whether they are assigned at different - * levels (`mixed`). - */ -export const getOrgUnitSide = (sources) => { - const assigned = sources - .filter(({ orgUnitLevels }) => orgUnitLevels) - .map(({ orgUnitLevels }) => levelsOf(orgUnitLevels)) - const levels = [...new Set(assigned.flat())].sort((a, b) => b - a) - const deepestOfEach = assigned - .filter((sourceLevels) => sourceLevels.length) - .map((sourceLevels) => Math.max(...sourceLevels)) - - return { - levels, - entryLevel: levels[0] ?? null, - mixed: new Set(deepestOfEach).size > 1, - } -} - -/** - * The profile with its org unit side, from each data set's or program's - * assigned units per level (`assignedLevels`, by id, as - * fetchSourceOrgUnitLevels gives them): each source gains its - * `orgUnitLevels`, except program indicators placed anywhere - * (isPlacedAnywhere). - */ -export const withOrgUnitSide = (profile, assignedLevels) => { - const sources = profile.sources.map((source) => - getSourceId(source) && !isPlacedAnywhere(source) - ? { - ...source, - orgUnitLevels: assignedLevels[getSourceId(source)] ?? {}, - } - : source - ) - - return { ...profile, sources, orgUnit: getOrgUnitSide(sources) } -} diff --git a/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js b/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js new file mode 100644 index 000000000..2fe42aeef --- /dev/null +++ b/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js @@ -0,0 +1,184 @@ +import { + getRequestedLevels, + getOrgUnitsToFetch, + parseOrgUnitSelectionItem, + readOrgUnitSelection, +} from '../orgUnitSelection.js' + +describe('parseOrgUnitSelectionItem', () => { + it.each([ + ['ImspTQPwCqd', { type: 'ORG_UNIT' }], + ['LEVEL-2', { type: 'LEVEL', level: 2 }], + ['LEVEL-wjP19dkFeIk', { type: 'LEVEL', level: 'wjP19dkFeIk' }], + ['OU_GROUP-RXL3lPSK8oG', { type: 'GROUP', groupId: 'RXL3lPSK8oG' }], + ['USER_ORGUNIT', { type: 'USER', depth: 0 }], + ['USER_ORGUNIT_CHILDREN', { type: 'USER', depth: 1 }], + ['USER_ORGUNIT_GRANDCHILDREN', { type: 'USER', depth: 2 }], + ['not an id', { type: 'UNKNOWN' }], + ])('reads %s', (id, expected) => { + expect(parseOrgUnitSelectionItem(id)).toEqual({ id, ...expected }) + }) +}) + +describe('readOrgUnitSelection', () => { + it('judges units on their own', () => { + expect(readOrgUnitSelection(['unitAAAAAAA', 'unitBBBBBBB'])).toEqual({ + selectionItems: [ + { id: 'unitAAAAAAA', type: 'ORG_UNIT' }, + { id: 'unitBBBBBBB', type: 'ORG_UNIT' }, + ], + parentOrgUnitIds: [], + }) + }) + + it('takes the units as boundaries of a level or a group', () => { + expect( + readOrgUnitSelection(['unitAAAAAAA', 'LEVEL-3', 'USER_ORGUNIT']) + ).toEqual({ + selectionItems: [ + { id: 'LEVEL-3', type: 'LEVEL', level: 3 }, + { id: 'USER_ORGUNIT', type: 'USER', depth: 0 }, + ], + parentOrgUnitIds: ['unitAAAAAAA'], + }) + }) + + it('reads nothing from no selection', () => { + expect(readOrgUnitSelection()).toEqual({ + selectionItems: [], + parentOrgUnitIds: [], + }) + }) +}) + +describe('getOrgUnitsToFetch', () => { + it('counts the units of a selection', () => { + expect(getOrgUnitsToFetch(['unitAAAAAAA', 'LEVEL-2'])).toEqual({ + orgUnitIds: ['unitAAAAAAA'], + needsRoots: false, + needsUserOrgUnits: false, + groupIds: [], + }) + }) + + it('counts the roots for a level alone, and the user units', () => { + expect( + getOrgUnitsToFetch(['LEVEL-2', 'USER_ORGUNIT_CHILDREN']) + ).toEqual({ + orgUnitIds: [], + needsRoots: true, + needsUserOrgUnits: true, + groupIds: [], + }) + expect(getOrgUnitsToFetch()).toEqual({ + orgUnitIds: [], + needsRoots: false, + needsUserOrgUnits: false, + groupIds: [], + }) + }) + + it('lists the groups once each, with no roots for them', () => { + expect( + getOrgUnitsToFetch(['OU_GROUP-groupAAAAAA', 'OU_GROUP-groupAAAAAA']) + ).toEqual({ + orgUnitIds: [], + needsRoots: false, + needsUserOrgUnits: false, + groupIds: ['groupAAAAAA'], + }) + }) +}) + +describe('getRequestedLevels', () => { + const COVERAGE = { + levels: [ + { id: 'levelNation', level: 1 }, + { id: 'levelDistri', level: 2 }, + ], + orgUnits: { + nation: { id: 'nation', level: 1 }, + district: { id: 'district', level: 2 }, + facility: { id: 'facility', level: 4 }, + }, + rootIds: ['nation'], + userOrgUnitIds: ['district'], + groups: { groupAAAAAA: { 2: 3, 3: 0, 4: 5 } }, + } + const targets = (id, boundaries = [], coverage = COVERAGE) => + getRequestedLevels(parseOrgUnitSelectionItem(id), boundaries, coverage) + + it('asks a unit at its own level', () => { + expect(targets('district')).toBeNull() + expect( + getRequestedLevels( + { id: 'district', type: 'ORG_UNIT' }, + [], + COVERAGE + ) + ).toEqual([{ countsKey: 'district', level: 2 }]) + }) + + it('asks a level under each boundary that is above it', () => { + expect(targets('LEVEL-3', ['nation', 'facility'])).toEqual([ + { countsKey: 'nation', level: 3 }, + ]) + }) + + it('asks a level under the roots without boundaries, by number or id', () => { + expect(targets('LEVEL-levelDistri')).toEqual([ + { countsKey: 'nation', level: 2 }, + ]) + }) + + it('asks the user units at their level plus the depth', () => { + expect(targets('USER_ORGUNIT_GRANDCHILDREN')).toEqual([ + { countsKey: 'district', level: 4 }, + ]) + }) + + it('asks a group at each level its members are at', () => { + expect(targets('OU_GROUP-groupAAAAAA')).toEqual([ + { countsKey: 'groupAAAAAA:2:', level: 2, groupId: 'groupAAAAAA' }, + { countsKey: 'groupAAAAAA:4:', level: 4, groupId: 'groupAAAAAA' }, + ]) + }) + + it('asks a group under each boundary at or above its members', () => { + expect( + targets('OU_GROUP-groupAAAAAA', ['district', 'facility']) + ).toEqual([ + { + countsKey: 'groupAAAAAA:2:district', + level: 2, + groupId: 'groupAAAAAA', + }, + { + countsKey: 'groupAAAAAA:4:district', + level: 4, + groupId: 'groupAAAAAA', + }, + { + countsKey: 'groupAAAAAA:4:facility', + level: 4, + groupId: 'groupAAAAAA', + }, + ]) + }) + + it('cannot tell for a group, an unknown level, or units not loaded', () => { + expect(targets('OU_GROUP-notLoadedGr')).toBeNull() + expect(targets('OU_GROUP-groupAAAAAA', ['notLoadedUn'])).toBeNull() + expect(targets('LEVEL-unknownLvl')).toBeNull() + expect(targets('LEVEL-3', ['notLoadedUn'])).toBeNull() + expect( + targets('USER_ORGUNIT', [], { ...COVERAGE, userOrgUnitIds: null }) + ).toBeNull() + expect( + targets('USER_ORGUNIT', [], { + ...COVERAGE, + userOrgUnitIds: ['other'], + }) + ).toBeNull() + }) +}) diff --git a/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js new file mode 100644 index 000000000..6496322c1 --- /dev/null +++ b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js @@ -0,0 +1,212 @@ +import { + ouIdHelper, + USER_ORG_UNIT, + USER_ORG_UNIT_CHILDREN, + USER_ORG_UNIT_GRANDCHILDREN, +} from '../../ouIdHelper/index.js' +import { + ORG_UNIT_ITEM_TYPE_GROUP, + ORG_UNIT_ITEM_TYPE_LEVEL, + ORG_UNIT_ITEM_TYPE_ORG_UNIT, + ORG_UNIT_ITEM_TYPE_UNKNOWN, + ORG_UNIT_ITEM_TYPE_USER, +} from '../constants.js' + +/* An org unit selection is DV's org unit items: org unit ids, LEVEL-n (a + * number or a level id), OU_GROUP-id, and the user's org units + * (USER_ORGUNIT, its children or grandchildren). A selection item is one of + * them, not a data item. */ + +// How many levels below the user's org units each user item reaches +const USER_ITEM_DEPTHS = { + [USER_ORG_UNIT]: 0, + [USER_ORG_UNIT_CHILDREN]: 1, + [USER_ORG_UNIT_GRANDCHILDREN]: 2, +} + +const UID = /^[a-zA-Z][a-zA-Z0-9]{10}$/ + +export const parseOrgUnitSelectionItem = (id) => { + if (id in USER_ITEM_DEPTHS) { + return { + id, + type: ORG_UNIT_ITEM_TYPE_USER, + depth: USER_ITEM_DEPTHS[id], + } + } + + if (ouIdHelper.hasLevelPrefix(id)) { + const level = ouIdHelper.removePrefix(id) + + return { + id, + type: ORG_UNIT_ITEM_TYPE_LEVEL, + level: /^\d+$/.test(level) ? Number(level) : level, + } + } + + if (ouIdHelper.hasGroupPrefix(id)) { + return { + id, + type: ORG_UNIT_ITEM_TYPE_GROUP, + groupId: ouIdHelper.removePrefix(id), + } + } + + return { + id, + type: UID.test(id) + ? ORG_UNIT_ITEM_TYPE_ORG_UNIT + : ORG_UNIT_ITEM_TYPE_UNKNOWN, + } +} + +const isOfType = (...types) => { + const typeSet = new Set(types) + + return ({ type }) => typeSet.has(type) +} + +const isLevelOrGroup = isOfType( + ORG_UNIT_ITEM_TYPE_LEVEL, + ORG_UNIT_ITEM_TYPE_GROUP +) + +/** + * A selection as analytics reads it: with a level or a group in it, the org + * units are parents (districts in Bo, a group's members in Bo), not items of + * their own. Gives the `selectionItems` to judge and the `parentOrgUnitIds`. + */ +export const readOrgUnitSelection = (orgUnits = []) => { + const parsed = orgUnits.map(parseOrgUnitSelectionItem) + const hasParents = parsed.some(isLevelOrGroup) + const isOrgUnit = isOfType(ORG_UNIT_ITEM_TYPE_ORG_UNIT) + + return { + selectionItems: hasParents + ? parsed.filter((item) => !isOrgUnit(item)) + : parsed, + parentOrgUnitIds: hasParents + ? parsed.filter(isOrgUnit).map(({ id }) => id) + : [], + } +} + +/** + * What a selection needs fetched: its org units, the roots (a level with no + * parent), the user's org units, and its groups. + */ +export const getOrgUnitsToFetch = (orgUnits = []) => { + const parsed = orgUnits.map(parseOrgUnitSelectionItem) + const ofType = (type) => parsed.filter(isOfType(type)) + + return { + orgUnitIds: ofType(ORG_UNIT_ITEM_TYPE_ORG_UNIT).map(({ id }) => id), + needsRoots: + ofType(ORG_UNIT_ITEM_TYPE_LEVEL).length > 0 && + !ofType(ORG_UNIT_ITEM_TYPE_ORG_UNIT).length, + needsUserOrgUnits: ofType(ORG_UNIT_ITEM_TYPE_USER).length > 0, + groupIds: [ + ...new Set( + ofType(ORG_UNIT_ITEM_TYPE_GROUP).map(({ groupId }) => groupId) + ), + ], + } +} + +// Where the counts of a group's members at one level, under one parent, are kept +export const getGroupCountsKey = (groupId, level, parentOrgUnitId) => + `${groupId}:${level}:${parentOrgUnitId ?? ''}` + +const getLevelNumber = (level, levels) => + typeof level === 'number' + ? level + : levels.find(({ id }) => id === level)?.level ?? null + +/* A group's members at each level they are at, under each parent at or + * above them: analytics keeps the members inside the parents */ +const getGroupRequestedLevels = ( + groupId, + parentOrgUnitIds, + { orgUnits, groups } +) => { + const membersByLevel = groups?.[groupId] + const parents = parentOrgUnitIds.length ? parentOrgUnitIds : [null] + + if (!membersByLevel || parentOrgUnitIds.some((id) => !orgUnits[id])) { + return null + } + + return Object.keys(membersByLevel) + .map(Number) + .filter((level) => membersByLevel[level] > 0) + .flatMap((level) => + parents + .filter( + (parentId) => !parentId || orgUnits[parentId].level <= level + ) + .map((parentId) => ({ + countsKey: getGroupCountsKey(groupId, level, parentId), + level, + groupId, + })) + ) +} + +/** + * The levels analytics aggregates to for a selection item, each with where + * its counts are kept in the coverage (fetchOrgUnitCoverage): an org unit at + * its own level; LEVEL-n at level n under each parent (or under the roots); + * the user's org units at their level plus the item's depth; a group at each + * level its members are at, under each parent. Null when it can't be told: + * an unknown id or level, or an org unit or group that isn't loaded. + */ +export const getRequestedLevels = ( + selectionItem, + parentOrgUnitIds, + coverage +) => { + const { orgUnits, rootIds = [], userOrgUnitIds, levels = [] } = coverage + const atOwnLevel = (orgUnitId, depth = 0) => + orgUnits[orgUnitId] && { + countsKey: orgUnitId, + level: orgUnits[orgUnitId].level + depth, + } + + switch (selectionItem.type) { + case ORG_UNIT_ITEM_TYPE_ORG_UNIT: { + const requested = atOwnLevel(selectionItem.id) + + return requested ? [requested] : null + } + case ORG_UNIT_ITEM_TYPE_LEVEL: { + const level = getLevelNumber(selectionItem.level, levels) + const parents = parentOrgUnitIds.length ? parentOrgUnitIds : rootIds + + if (!level || parents.some((id) => !orgUnits[id])) { + return null + } + + return parents + .filter((id) => orgUnits[id].level <= level) + .map((id) => ({ countsKey: id, level })) + } + case ORG_UNIT_ITEM_TYPE_USER: { + const requested = (userOrgUnitIds ?? []).map((id) => + atOwnLevel(id, selectionItem.depth) + ) + + return userOrgUnitIds && !requested.includes(undefined) + ? requested + : null + } + case ORG_UNIT_ITEM_TYPE_GROUP: + return getGroupRequestedLevels( + selectionItem.groupId, + parentOrgUnitIds, + coverage + ) + default: + return null + } +} diff --git a/src/modules/dataItemProfile/periodTypeRelations.js b/src/modules/dataItemProfile/periodTypeRelations.js deleted file mode 100644 index 56e7b764d..000000000 --- a/src/modules/dataItemProfile/periodTypeRelations.js +++ /dev/null @@ -1,192 +0,0 @@ -import { - convertToIso8601, - createFixedPeriodFromPeriodId, - getFixedPeriodByDate, -} from '@dhis2/multi-calendar-dates' -import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../components/PeriodDimension/utils/enabledPeriodTypes.js' -import { getFrequencyOrder, isPeriodType } from './periodTypes.js' - -export const PERIOD_RELATION_SAME = 'same' -export const PERIOD_RELATION_WITHIN = 'within' -export const PERIOD_RELATION_CONTAINS = 'contains' -export const PERIOD_RELATION_OVERLAPS = 'overlaps' -export const PERIOD_RELATION_DISJOINT = 'disjoint' - -/** - * Whether analytics adds data collected at `dataPeriodType` into periods of - * `queryPeriodType`: only into the same type, or into a type with a higher - * frequencyOrder. Another type of the same order (a Wednesday week for a - * Monday week) gets nothing. Averaged data is repeated and FIRST and LAST - * carried instead, see getDataItemProfileCompatibility. Null when either type - * is unknown. - */ -export const aggregatesInto = (dataPeriodType, queryPeriodType) => { - if (!isPeriodType(dataPeriodType) || !isPeriodType(queryPeriodType)) { - return null - } - - return ( - dataPeriodType === queryPeriodType || - getFrequencyOrder(queryPeriodType) > getFrequencyOrder(dataPeriodType) - ) -} - -export const comparePeriodTypes = (a, b) => - getFrequencyOrder(a) - getFrequencyOrder(b) - -const ISO_CALENDARS = ['gregory', 'iso8601'] - -/* November types name the year they end in: 2025Nov is November 2024 to - * October 2025, 2025NovQ1 November 2024 to January 2025. multi-calendar-dates - * 1.3.2 can't read the quarters and six-months, gives them ids the server - * doesn't know (2024NovemberQ1), and puts 2025Nov a year late. */ -const NOVEMBER_PERIOD_ID = /^(\d{4})Nov(?:([QS])([1-4]))?$/ -const NOVEMBER_PERIOD_TYPE_SUFFIXES = { - FinancialNov: { kind: '', months: 12 }, - QuarterlyNov: { kind: 'Q', months: 3 }, - SixMonthlyNov: { kind: 'S', months: 6 }, -} - -const pad = (number, length = 2) => String(number).padStart(length, '0') - -const getNovemberPeriodDates = (periodId) => { - const [, year, kind, number] = periodId.match(NOVEMBER_PERIOD_ID) - const months = { Q: 3, S: 6 }[kind] ?? 12 - const firstMonth = 10 + (Number(number ?? 1) - 1) * months - const start = new Date(Date.UTC(Number(year) - 1, firstMonth, 1)) - const end = new Date(Date.UTC(Number(year) - 1, firstMonth + months, 0)) - const toDate = (date) => - `${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad( - date.getUTCDate() - )}` - - return { startDate: toDate(start), endDate: toDate(end) } -} - -// The November period that holds an ISO date (YYYY-MM-DD) -const getNovemberPeriodByDate = (periodType, date) => { - const { kind, months } = NOVEMBER_PERIOD_TYPE_SUFFIXES[periodType] - const [year, month] = date.split('-').map(Number) - const endYear = month >= 11 ? year + 1 : year - const monthsSinceNovember = (month + 1) % 12 - const number = Math.floor(monthsSinceNovember / months) + 1 - const id = `${endYear}Nov${kind ? `${kind}${number}` : ''}` - - return { id, ...getNovemberPeriodDates(id) } -} - -// Start and end dates in the calendar's own dates, or null for an unknown id -export const getPeriodDates = (periodId, calendar = 'gregory') => { - if (NOVEMBER_PERIOD_ID.test(periodId)) { - return ISO_CALENDARS.includes(calendar) - ? getNovemberPeriodDates(periodId) - : null - } - - try { - const { startDate, endDate } = createFixedPeriodFromPeriodId({ - periodId, - calendar, - }) - - return { startDate, endDate } - } catch { - return null - } -} - -// Dates are YYYY-MM-DD strings of one calendar, so they compare as strings -export const getPeriodRelation = (a, b) => { - if (a.startDate === b.startDate && a.endDate === b.endDate) { - return PERIOD_RELATION_SAME - } - - if (a.endDate < b.startDate || b.endDate < a.startDate) { - return PERIOD_RELATION_DISJOINT - } - - if (a.startDate >= b.startDate && a.endDate <= b.endDate) { - return PERIOD_RELATION_WITHIN - } - - if (b.startDate >= a.startDate && b.endDate <= a.endDate) { - return PERIOD_RELATION_CONTAINS - } - - return PERIOD_RELATION_OVERLAPS -} - -export const getFixedPeriodOfTypeByDate = ( - periodType, - date, - calendar = 'gregory' -) => { - if (NOVEMBER_PERIOD_TYPE_SUFFIXES[periodType]) { - return ISO_CALENDARS.includes(calendar) - ? getNovemberPeriodByDate(periodType, date) - : null - } - - const libraryPeriodType = SERVER_PT_TO_MULTI_CALENDAR_PT[periodType] - - if (!libraryPeriodType) { - return null - } - - try { - return getFixedPeriodByDate({ - periodType: libraryPeriodType, - date, - calendar, - }) - } catch { - return null - } -} - -/** - * The smallest range of whole `periodType` periods that covers `dates`, or - * null when it can't be told. - */ -export const widenToWholePeriods = ( - dates, - periodType, - calendar = 'gregory' -) => { - const first = getFixedPeriodOfTypeByDate( - periodType, - dates.startDate, - calendar - ) - const last = getFixedPeriodOfTypeByDate(periodType, dates.endDate, calendar) - - if (!first || !last) { - return null - } - - return { startDate: first.startDate, endDate: last.endDate } -} - -/** - * Whether a period starts and ends on the edges of `periodType`'s periods, so - * data of that type fits it exactly (a quarter on monthly data, not a month on - * weekly data). Null when it can't be told. - */ -export const periodNestsIn = (dates, periodType, calendar = 'gregory') => { - const widened = widenToWholePeriods(dates, periodType, calendar) - - return widened - ? getPeriodRelation(widened, dates) === PERIOD_RELATION_SAME - : null -} - -// Analytics takes ISO dates: dates of other calendars are converted -export const toIsoDate = (date, calendar = 'gregory') => { - if (!date || ISO_CALENDARS.includes(calendar)) { - return date - } - - const { year, month, day } = convertToIso8601(date, calendar) - - return `${pad(year, 4)}-${pad(month)}-${pad(day)}` -} diff --git a/src/modules/dataItemProfile/periodTypes.js b/src/modules/dataItemProfile/periodTypes.js deleted file mode 100644 index 8050d08f7..000000000 --- a/src/modules/dataItemProfile/periodTypes.js +++ /dev/null @@ -1,164 +0,0 @@ -import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../components/PeriodDimension/utils/enabledPeriodTypes.js' -import { PERIOD_TYPE_REGEX } from '../../components/PeriodDimension/utils/fixedPeriods.js' -import { getRelativePeriodsDetails } from '../../components/PeriodDimension/utils/relativePeriods.js' - -// Server period type names with their frequencyOrder, as /api/periodTypes returns them -export const PERIOD_TYPE_FREQUENCY_ORDER = { - Daily: 1, - Weekly: 7, - WeeklyWednesday: 7, - WeeklyThursday: 7, - WeeklyFriday: 7, - WeeklySaturday: 7, - WeeklySunday: 7, - BiWeekly: 14, - Monthly: 30, - BiMonthly: 61, - Quarterly: 91, - QuarterlyNov: 91, - SixMonthly: 182, - SixMonthlyApril: 182, - SixMonthlyNov: 182, - Yearly: 365, - FinancialFeb: 365, - FinancialApril: 365, - FinancialJuly: 365, - FinancialAug: 365, - FinancialSep: 365, - FinancialOct: 365, - FinancialNov: 365, - TwoYearly: 730, -} - -export const PERIOD_TYPES = Object.keys(PERIOD_TYPE_FREQUENCY_ORDER) - -/* Analytics fails on QuarterlyNov periods in 2.40 ("Can't find resource for - * bundle … key format.QuarterlyNov.startDate"), and answers from 2.41 */ -const PERIOD_TYPE_MIN_MINOR_VERSION = { QuarterlyNov: 41 } - -// Without a server version, every type counts as supported -export const isPeriodTypeSupported = (periodType, serverVersion) => - !serverVersion || - serverVersion.major > 2 || - serverVersion.minor >= (PERIOD_TYPE_MIN_MINOR_VERSION[periodType] ?? 0) - -const WEEKLY_PERIOD_TYPES = PERIOD_TYPES.filter((type) => - type.startsWith('Weekly') -) -const FINANCIAL_PERIOD_TYPES = PERIOD_TYPES.filter((type) => - type.startsWith('Financial') -) - -export const isPeriodType = (value) => - Object.prototype.hasOwnProperty.call(PERIOD_TYPE_FREQUENCY_ORDER, value) - -export const getFrequencyOrder = (periodType) => - PERIOD_TYPE_FREQUENCY_ORDER[periodType] - -export const sortPeriodTypes = (periodTypes) => - [...periodTypes].sort( - (a, b) => - getFrequencyOrder(a) - getFrequencyOrder(b) || - PERIOD_TYPES.indexOf(a) - PERIOD_TYPES.indexOf(b) - ) - -const SERVER_PT_BY_LIBRARY_PT = Object.fromEntries( - Object.entries(SERVER_PT_TO_MULTI_CALENDAR_PT).map(([server, library]) => [ - library, - server, - ]) -) - -// PERIOD_TYPE_REGEX lacks the November quarters and six-months -const PERIOD_ID_PATTERNS = [ - ...Object.entries(PERIOD_TYPE_REGEX).map(([libraryType, regex]) => [ - SERVER_PT_BY_LIBRARY_PT[libraryType], - regex, - ]), - ['QuarterlyNov', /^(\d{4})NovQ([1-4])$/], - ['SixMonthlyNov', /^(\d{4})NovS([12])$/], -] - -export const getPeriodTypeOfPeriodId = (periodId) => - PERIOD_ID_PATTERNS.find(([, regex]) => regex.test(periodId))?.[0] ?? null - -const RELATIVE_CATEGORY_PERIOD_TYPES = { - DAILY: ['Daily'], - BIWEEKLY: ['BiWeekly'], - MONTHLY: ['Monthly'], - BIMONTHLY: ['BiMonthly'], - QUARTERLY: ['Quarterly'], - SIXMONTHLY: ['SixMonthly'], - YEARLY: ['Yearly'], -} - -/* Relative weeks and financial years follow the analyticsWeeklyStart and - * analyticsFinancialYearStart settings. Without them, every type they could - * be is returned. */ -const getRelativePeriodTypes = (category, options) => { - if (category === 'WEEKLY') { - return options.weeklyPeriodType - ? [options.weeklyPeriodType] - : WEEKLY_PERIOD_TYPES - } - - if (category === 'FINANCIAL') { - return options.financialYearPeriodType - ? [options.financialYearPeriodType] - : FINANCIAL_PERIOD_TYPES - } - - return RELATIVE_CATEGORY_PERIOD_TYPES[category] ?? [] -} - -const getRelativePeriodCategory = (periodId) => - getRelativePeriodsDetails()[periodId]?.type - -/** - * The period types a period can be: one for a fixed period or a period type, - * several for a relative period whose type depends on a server setting, none - * when it isn't recognized. - */ -export const getCandidatePeriodTypes = (period, options = {}) => { - if (isPeriodType(period)) { - return [period] - } - - const fixedPeriodType = getPeriodTypeOfPeriodId(period) - - if (fixedPeriodType) { - return [fixedPeriodType] - } - - const category = getRelativePeriodCategory(period) - - return category ? getRelativePeriodTypes(category, options) : [] -} - -const WEEKLY_START_TO_PERIOD_TYPE = { - WEEKLY: 'Weekly', - WEEKLY_WEDNESDAY: 'WeeklyWednesday', - WEEKLY_THURSDAY: 'WeeklyThursday', - WEEKLY_FRIDAY: 'WeeklyFriday', - WEEKLY_SATURDAY: 'WeeklySaturday', - WEEKLY_SUNDAY: 'WeeklySunday', -} - -const FINANCIAL_YEAR_START_TO_PERIOD_TYPE = { - FINANCIAL_YEAR_FEBRUARY: 'FinancialFeb', - FINANCIAL_YEAR_APRIL: 'FinancialApril', - FINANCIAL_YEAR_JULY: 'FinancialJuly', - FINANCIAL_YEAR_AUGUST: 'FinancialAug', - FINANCIAL_YEAR_SEPTEMBER: 'FinancialSep', - FINANCIAL_YEAR_OCTOBER: 'FinancialOct', - FINANCIAL_YEAR_NOVEMBER: 'FinancialNov', -} - -export const getRelativePeriodTypeOptions = ({ - analyticsWeeklyStart, - analyticsFinancialYearStart, -} = {}) => ({ - weeklyPeriodType: WEEKLY_START_TO_PERIOD_TYPE[analyticsWeeklyStart], - financialYearPeriodType: - FINANCIAL_YEAR_START_TO_PERIOD_TYPE[analyticsFinancialYearStart], -}) diff --git a/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js b/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js new file mode 100644 index 000000000..360f7503c --- /dev/null +++ b/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js @@ -0,0 +1,46 @@ +import { + formatDate, + getYear, + isIsoCalendar, + pad, + shiftDate, + toIsoDate, +} from '../calendarDates.js' + +describe('calendarDates', () => { + it('needs no conversion for the ISO calendars only', () => { + expect(isIsoCalendar()).toBe(true) + expect(isIsoCalendar('iso8601')).toBe(true) + expect(isIsoCalendar('nepali')).toBe(false) + }) + + it('formats and reads dates', () => { + expect(pad(7)).toBe('07') + expect(pad(825, 4)).toBe('0825') + expect(formatDate({ year: 2025, month: 1, day: 6 })).toBe('2025-01-06') + expect(getYear('2025-01-06')).toBe(2025) + }) + + it('shifts a date by days, across months and years', () => { + expect(shiftDate('2025-01-01', -1)).toBe('2024-12-31') + expect(shiftDate('2024-02-28', 1, 'iso8601')).toBe('2024-02-29') + }) + + it('shifts a date of another calendar in that calendar', () => { + expect(shiftDate('2081-01-03', 1, 'nepali')).toBe('2081-01-04') + expect(toIsoDate(shiftDate('2081-01-03', 1, 'nepali'), 'nepali')).toBe( + '2024-04-16' + ) + }) +}) + +describe('toIsoDate', () => { + it('keeps ISO dates', () => { + expect(toIsoDate('2025-01-06')).toBe('2025-01-06') + expect(toIsoDate('2025-01-06', 'iso8601')).toBe('2025-01-06') + }) + + it('converts dates of other calendars', () => { + expect(toIsoDate('2081-01-03', 'nepali')).toBe('2024-04-15') + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/carriedValues.spec.js b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js similarity index 95% rename from src/modules/dataItemProfile/__tests__/carriedValues.spec.js rename to src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js index b95cc3e49..10da7babd 100644 --- a/src/modules/dataItemProfile/__tests__/carriedValues.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js @@ -1,5 +1,8 @@ -import { getCarriedSource, getYearsTouched } from '../carriedValues.js' -import { getPeriodDates } from '../periodTypeRelations.js' +import { + getFirstOrLastValuePeriod, + getYearsTouched, +} from '../firstLastValues.js' +import { getPeriodDates } from '../periodRanges.js' const sourceOf = ({ periodAggregationType = 'LAST', @@ -10,7 +13,7 @@ const sourceOf = ({ }) => { const dates = getPeriodDates(period, calendar) - return getCarriedSource({ + return getFirstOrLastValuePeriod({ periodAggregationType, periodType, dates, @@ -29,7 +32,7 @@ describe('getYearsTouched', () => { }) }) -describe('getCarriedSource', () => { +describe('getFirstOrLastValuePeriod', () => { describe('LAST', () => { it('takes the latest data period that ended by the end of the period', () => { expect( diff --git a/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js b/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js new file mode 100644 index 000000000..7a67c6752 --- /dev/null +++ b/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js @@ -0,0 +1,49 @@ +import { + getNovemberPeriodByDate, + getNovemberPeriodDates, + getPeriodIdYear, + isNovemberPeriodId, + isNovemberPeriodType, +} from '../multiCalendarPatches.js' + +describe('multiCalendarPatches', () => { + it('tells November periods and types apart', () => { + expect(isNovemberPeriodId('2025NovQ1')).toBe(true) + expect(isNovemberPeriodId('2025Nov')).toBe(true) + expect(isNovemberPeriodId('2025Q1')).toBe(false) + expect(isNovemberPeriodType('SixMonthlyNov')).toBe(true) + expect(isNovemberPeriodType('SixMonthly')).toBe(false) + expect(isNovemberPeriodType('toString')).toBe(false) + }) + + it('dates November periods by the year they end in', () => { + expect(getNovemberPeriodDates('2025Nov')).toEqual({ + startDate: '2024-11-01', + endDate: '2025-10-31', + }) + expect(getNovemberPeriodDates('2025NovS2')).toEqual({ + startDate: '2025-05-01', + endDate: '2025-10-31', + }) + }) + + it.each([ + ['FinancialNov', '2024-11-01', '2025Nov'], + ['FinancialNov', '2025-10-31', '2025Nov'], + ['QuarterlyNov', '2024-12-15', '2025NovQ1'], + ['QuarterlyNov', '2025-02-01', '2025NovQ2'], + ['SixMonthlyNov', '2025-05-01', '2025NovS2'], + ])('finds the %s period holding %s: %s', (periodType, date, id) => { + expect(getNovemberPeriodByDate(periodType, date).id).toBe(id) + }) + + it('gives the year in a period id, the end year for November types', () => { + const novemberQuarter = getNovemberPeriodByDate( + 'QuarterlyNov', + '2024-12-15' + ) + + expect(getPeriodIdYear(novemberQuarter, 'QuarterlyNov')).toBe(2025) + expect(getPeriodIdYear({ id: '2024W52' }, 'Weekly')).toBe(2024) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js b/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js similarity index 67% rename from src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js rename to src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js index 8779e79f2..acf02812c 100644 --- a/src/modules/dataItemProfile/__tests__/periodTypeRelations.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js @@ -1,45 +1,10 @@ import { - aggregatesInto, - comparePeriodTypes, + comparePeriodRanges, + getCoveringPeriodRange, getFixedPeriodOfTypeByDate, getPeriodDates, - getPeriodRelation, - periodNestsIn, - toIsoDate, - widenToWholePeriods, -} from '../periodTypeRelations.js' - -describe('aggregatesInto', () => { - it.each([ - ['Monthly', 'Monthly', true], - ['Weekly', 'Monthly', true], - ['Daily', 'TwoYearly', true], - ['Monthly', 'FinancialApril', true], - ['Monthly', 'Weekly', false], - ['Yearly', 'Quarterly', false], - ['WeeklyWednesday', 'Weekly', false], - ['Weekly', 'WeeklyWednesday', false], - ['Yearly', 'FinancialApril', false], - ['Quarterly', 'QuarterlyNov', false], - ['Weekly', 'BiWeekly', true], - ['WeeklyWednesday', 'BiWeekly', true], - ])('%s data into %s queries: %s', (data, query, expected) => { - expect(aggregatesInto(data, query)).toBe(expected) - }) - - it('is null for an unknown type', () => { - expect(aggregatesInto('Hourly', 'Monthly')).toBeNull() - expect(aggregatesInto('Monthly', undefined)).toBeNull() - }) -}) - -describe('comparePeriodTypes', () => { - it('orders by frequency', () => { - expect(comparePeriodTypes('Weekly', 'Monthly')).toBeLessThan(0) - expect(comparePeriodTypes('Yearly', 'FinancialApril')).toBe(0) - expect(comparePeriodTypes('TwoYearly', 'Yearly')).toBeGreaterThan(0) - }) -}) + isAlignedWithPeriodType, +} from '../periodRanges.js' describe('getPeriodDates', () => { it.each([ @@ -89,7 +54,7 @@ describe('getPeriodDates', () => { }) }) -describe('getPeriodRelation', () => { +describe('comparePeriodRanges', () => { const jan = { startDate: '2025-01-01', endDate: '2025-01-31' } const q1 = { startDate: '2025-01-01', endDate: '2025-03-31' } const week1 = { startDate: '2024-12-30', endDate: '2025-01-05' } @@ -103,7 +68,7 @@ describe('getPeriodRelation', () => { [jan, feb, 'disjoint'], [feb, jan, 'disjoint'], ])('%j to %j: %s', (a, b, expected) => { - expect(getPeriodRelation(a, b)).toBe(expected) + expect(comparePeriodRanges(a, b)).toBe(expected) }) }) @@ -145,16 +110,16 @@ describe('getFixedPeriodOfTypeByDate', () => { }) }) -describe('widenToWholePeriods', () => { +describe('getCoveringPeriodRange', () => { it('widens to whole periods of the type', () => { expect( - widenToWholePeriods(getPeriodDates('2025W2'), 'Monthly') + getCoveringPeriodRange(getPeriodDates('2025W2'), 'Monthly') ).toEqual({ startDate: '2025-01-01', endDate: '2025-01-31', }) expect( - widenToWholePeriods(getPeriodDates('2025W1'), 'Monthly') + getCoveringPeriodRange(getPeriodDates('2025W1'), 'Monthly') ).toEqual({ startDate: '2024-12-01', endDate: '2025-01-31', @@ -163,12 +128,12 @@ describe('widenToWholePeriods', () => { it('is null when it cannot tell', () => { expect( - widenToWholePeriods(getPeriodDates('2025W2'), 'TwoYearly') + getCoveringPeriodRange(getPeriodDates('2025W2'), 'TwoYearly') ).toBeNull() }) }) -describe('periodNestsIn', () => { +describe('isAlignedWithPeriodType', () => { it.each([ ['2025Q1', 'Monthly', true], ['2025', 'Quarterly', true], @@ -180,19 +145,8 @@ describe('periodNestsIn', () => { ['2025April', 'SixMonthly', false], ['2025Q1', 'TwoYearly', null], ])('%s on %s data: %s', (periodId, periodType, expected) => { - expect(periodNestsIn(getPeriodDates(periodId), periodType)).toBe( - expected - ) - }) -}) - -describe('toIsoDate', () => { - it('keeps ISO dates', () => { - expect(toIsoDate('2025-01-06')).toBe('2025-01-06') - expect(toIsoDate('2025-01-06', 'iso8601')).toBe('2025-01-06') - }) - - it('converts dates of other calendars', () => { - expect(toIsoDate('2081-01-03', 'nepali')).toBe('2024-04-15') + expect( + isAlignedWithPeriodType(getPeriodDates(periodId), periodType) + ).toBe(expected) }) }) diff --git a/src/modules/dataItemProfile/__tests__/periodTypes.spec.js b/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js similarity index 79% rename from src/modules/dataItemProfile/__tests__/periodTypes.spec.js rename to src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js index eab04ca5b..3506549bf 100644 --- a/src/modules/dataItemProfile/__tests__/periodTypes.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js @@ -1,5 +1,7 @@ +import { PERIOD_TYPES } from '../../constants.js' import { - PERIOD_TYPES, + canAggregateInto, + compareByFrequency, getCandidatePeriodTypes, getPeriodTypeOfPeriodId, getRelativePeriodTypeOptions, @@ -153,3 +155,35 @@ describe('isPeriodTypeSupported', () => { expect(isPeriodTypeSupported('QuarterlyNov')).toBe(true) }) }) + +describe('canAggregateInto', () => { + it.each([ + ['Monthly', 'Monthly', true], + ['Weekly', 'Monthly', true], + ['Daily', 'TwoYearly', true], + ['Monthly', 'FinancialApril', true], + ['Monthly', 'Weekly', false], + ['Yearly', 'Quarterly', false], + ['WeeklyWednesday', 'Weekly', false], + ['Weekly', 'WeeklyWednesday', false], + ['Yearly', 'FinancialApril', false], + ['Quarterly', 'QuarterlyNov', false], + ['Weekly', 'BiWeekly', true], + ['WeeklyWednesday', 'BiWeekly', true], + ])('%s data into %s queries: %s', (data, query, expected) => { + expect(canAggregateInto(data, query)).toBe(expected) + }) + + it('is null for an unknown type', () => { + expect(canAggregateInto('Hourly', 'Monthly')).toBeNull() + expect(canAggregateInto('Monthly', undefined)).toBeNull() + }) +}) + +describe('compareByFrequency', () => { + it('orders by frequency', () => { + expect(compareByFrequency('Weekly', 'Monthly')).toBeLessThan(0) + expect(compareByFrequency('Yearly', 'FinancialApril')).toBe(0) + expect(compareByFrequency('TwoYearly', 'Yearly')).toBeGreaterThan(0) + }) +}) diff --git a/src/modules/dataItemProfile/periods/calendarDates.js b/src/modules/dataItemProfile/periods/calendarDates.js new file mode 100644 index 000000000..97a4a3857 --- /dev/null +++ b/src/modules/dataItemProfile/periods/calendarDates.js @@ -0,0 +1,47 @@ +import { + convertFromIso8601, + convertToIso8601, +} from '@dhis2/multi-calendar-dates' + +/* Dates are YYYY-MM-DD strings in the server's calendar. Other calendars are + * supported: their dates are converted to ISO for analytics and back for + * multi-calendar-dates. These two need no conversion. */ +const ISO_CALENDARS = new Set(['gregory', 'iso8601']) + +export const isIsoCalendar = (calendar = 'gregory') => + ISO_CALENDARS.has(calendar) + +export const pad = (number, length = 2) => String(number).padStart(length, '0') + +export const formatDate = ({ year, month, day }) => + `${pad(year, 4)}-${pad(month)}-${pad(day)}` + +export const getYear = (date) => Number(date.slice(0, 4)) + +const shiftIsoDate = (isoDate, days) => { + const date = new Date(`${isoDate}T00:00:00Z`) + date.setUTCDate(date.getUTCDate() + days) + + return date.toISOString().slice(0, 10) +} + +// The date `days` later (or earlier, when negative), in the same calendar +export const shiftDate = (date, days, calendar = 'gregory') => { + if (isIsoCalendar(calendar)) { + return shiftIsoDate(date, days) + } + + const shifted = shiftIsoDate( + formatDate(convertToIso8601(date, calendar)), + days + ) + const { year, eraYear, month, day } = convertFromIso8601(shifted, calendar) + + return formatDate({ year: eraYear ?? year, month, day }) +} + +// Analytics takes ISO dates +export const toIsoDate = (date, calendar = 'gregory') => + !date || isIsoCalendar(calendar) + ? date + : formatDate(convertToIso8601(date, calendar)) diff --git a/src/modules/dataItemProfile/carriedValues.js b/src/modules/dataItemProfile/periods/firstLastValues.js similarity index 58% rename from src/modules/dataItemProfile/carriedValues.js rename to src/modules/dataItemProfile/periods/firstLastValues.js index 02e1b3028..cbbd566ba 100644 --- a/src/modules/dataItemProfile/carriedValues.js +++ b/src/modules/dataItemProfile/periods/firstLastValues.js @@ -1,55 +1,18 @@ -import { - convertFromIso8601, - convertToIso8601, -} from '@dhis2/multi-calendar-dates' -import { getFixedPeriodOfTypeByDate } from './periodTypeRelations.js' - -/* How analytics answers FIRST and LAST (checked by the test tool on 2.40 to - * 2.44): a data period counts when it ended by the end of the period asked +import { PERIOD_AGGREGATION_FIRST } from '../constants.js' +import { getYear, pad, shiftDate } from './calendarDates.js' +import { getPeriodIdYear } from './multiCalendarPatches.js' +import { getFixedPeriodOfTypeByDate } from './periodRanges.js' + +/* How analytics answers FIRST and LAST data (checked by the test tool on 2.40 + * to 2.44): a data period counts when it ended by the end of the period asked * for, and the year in its id is one of the calendar years the request's * periods touch. FIRST takes the earliest that counts, LAST the latest; none * gives no value. So FIRST in July gives January's value, and LAST on * 1 January gives nothing. */ -const ISO_CALENDARS = ['gregory', 'iso8601'] - -// November types name the year they end in: 2025NovQ1 is November 2024 to January 2025 -const NAMED_BY_END_YEAR = ['QuarterlyNov', 'SixMonthlyNov', 'FinancialNov'] - +// Enough to cross the years between two in a request, one period at a time at most const MAX_STEPS = 20 -const pad = (number, length = 2) => String(number).padStart(length, '0') - -const getYear = (date) => Number(date.slice(0, 4)) - -const shiftIsoDate = (isoDate, days) => { - const date = new Date(`${isoDate}T00:00:00Z`) - date.setUTCDate(date.getUTCDate() + days) - - return date.toISOString().slice(0, 10) -} - -const shiftDate = (date, days, calendar) => { - if (ISO_CALENDARS.includes(calendar)) { - return shiftIsoDate(date, days) - } - - const iso = convertToIso8601(date, calendar) - const shifted = shiftIsoDate( - `${pad(iso.year, 4)}-${pad(iso.month)}-${pad(iso.day)}`, - days - ) - const { year, eraYear, month, day } = convertFromIso8601(shifted, calendar) - - return `${pad(eraYear ?? year, 4)}-${pad(month)}-${pad(day)}` -} - -// The year in a data period's id, which places it in analytics' partitions -const getIdYear = (period, periodType) => - NAMED_BY_END_YEAR.includes(periodType) - ? getYear(period.endDate) - : Number(period.id.slice(0, 4)) - const getLastPeriodEndingBy = (periodType, date, calendar) => { const holding = getFixedPeriodOfTypeByDate(periodType, date, calendar) @@ -74,7 +37,7 @@ const getLatestCounting = ({ periodType, dates, years, calendar }) => { return null } - const idYear = getIdYear(period, periodType) + const idYear = getPeriodIdYear(period, periodType) if (years.includes(idYear)) { return period @@ -86,7 +49,6 @@ const getLatestCounting = ({ periodType, dates, years, calendar }) => { return null } - // Jump towards the next year that counts, one period at a time at most const yearEnd = `${pad(Math.max(...lowerYears) + 1, 4)}-12-31` const before = shiftDate(period.startDate, -1, calendar) date = yearEnd < before ? yearEnd : before @@ -104,7 +66,7 @@ const getEarliestCounting = ({ periodType, dates, years, calendar }) => { ) for (let step = 0; period && step < MAX_STEPS; step++) { - if (getIdYear(period, periodType) >= firstYear) { + if (getPeriodIdYear(period, periodType) >= firstYear) { return period.endDate <= dates.endDate ? period : null } @@ -123,7 +85,7 @@ const getEarliestCounting = ({ periodType, dates, years, calendar }) => { * `periodType`, in a period with `dates`, when the request touches the * calendar `years`; null when there is none. */ -export const getCarriedSource = ({ +export const getFirstOrLastValuePeriod = ({ periodAggregationType, periodType, dates, @@ -136,12 +98,12 @@ export const getCarriedSource = ({ const query = { periodType, dates, years, calendar } - return periodAggregationType === 'FIRST' + return periodAggregationType === PERIOD_AGGREGATION_FIRST ? getEarliestCounting(query) : getLatestCounting(query) } -// The calendar years a period's dates fall in +// The calendar years a range's dates fall in export const getYearsTouched = ({ startDate, endDate }) => { const years = [] diff --git a/src/modules/dataItemProfile/periods/multiCalendarPatches.js b/src/modules/dataItemProfile/periods/multiCalendarPatches.js new file mode 100644 index 000000000..2fb7ccefe --- /dev/null +++ b/src/modules/dataItemProfile/periods/multiCalendarPatches.js @@ -0,0 +1,59 @@ +import { formatDate, getYear } from './calendarDates.js' + +/* Workarounds for multi-calendar-dates 1.3.2, to remove once it is fixed + * upstream. November period types name the year they end in: 2025Nov is + * November 2024 to October 2025, 2025NovQ1 November 2024 to January 2025. + * The library can't read the quarters and six-months ids, gives them ids the + * server doesn't know (2024NovemberQ1), and puts 2025Nov a year late. Only the + * ISO calendar is patched. */ + +const NOVEMBER_PERIOD_ID = /^(\d{4})Nov(?:([QS])([1-4]))?$/ + +const NOVEMBER_PERIOD_TYPES = { + FinancialNov: { idPart: '', months: 12 }, + QuarterlyNov: { idPart: 'Q', months: 3 }, + SixMonthlyNov: { idPart: 'S', months: 6 }, +} + +export const isNovemberPeriodId = (periodId) => + NOVEMBER_PERIOD_ID.test(periodId) + +const NOVEMBER_PERIOD_TYPE_NAMES = new Set(Object.keys(NOVEMBER_PERIOD_TYPES)) + +export const isNovemberPeriodType = (periodType) => + NOVEMBER_PERIOD_TYPE_NAMES.has(periodType) + +const toDateString = (date) => + formatDate({ + year: date.getUTCFullYear(), + month: date.getUTCMonth() + 1, + day: date.getUTCDate(), + }) + +export const getNovemberPeriodDates = (periodId) => { + const [, year, idPart, number] = periodId.match(NOVEMBER_PERIOD_ID) + const months = { Q: 3, S: 6 }[idPart] ?? 12 + const firstMonth = 10 + (Number(number ?? 1) - 1) * months + const start = new Date(Date.UTC(Number(year) - 1, firstMonth, 1)) + const end = new Date(Date.UTC(Number(year) - 1, firstMonth + months, 0)) + + return { startDate: toDateString(start), endDate: toDateString(end) } +} + +// The November period that holds an ISO date +export const getNovemberPeriodByDate = (periodType, date) => { + const { idPart, months } = NOVEMBER_PERIOD_TYPES[periodType] + const [year, month] = date.split('-').map(Number) + const endYear = month >= 11 ? year + 1 : year + const monthsSinceNovember = (month + 1) % 12 + const number = Math.floor(monthsSinceNovember / months) + 1 + const id = `${endYear}Nov${idPart && idPart + number}` + + return { id, ...getNovemberPeriodDates(id) } +} + +// The year in a period's id: the year November periods end in +export const getPeriodIdYear = (period, periodType) => + isNovemberPeriodType(periodType) + ? getYear(period.endDate) + : Number(period.id.slice(0, 4)) diff --git a/src/modules/dataItemProfile/periods/periodRanges.js b/src/modules/dataItemProfile/periods/periodRanges.js new file mode 100644 index 000000000..3e0c949e3 --- /dev/null +++ b/src/modules/dataItemProfile/periods/periodRanges.js @@ -0,0 +1,134 @@ +import { + createFixedPeriodFromPeriodId, + getFixedPeriodByDate, +} from '@dhis2/multi-calendar-dates' +import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../../components/PeriodDimension/utils/enabledPeriodTypes.js' +import { + PERIOD_RANGE_CONTAINS, + PERIOD_RANGE_DISJOINT, + PERIOD_RANGE_OVERLAPS, + PERIOD_RANGE_SAME, + PERIOD_RANGE_WITHIN, +} from '../constants.js' +import { isIsoCalendar } from './calendarDates.js' +import { + getNovemberPeriodByDate, + getNovemberPeriodDates, + isNovemberPeriodId, + isNovemberPeriodType, +} from './multiCalendarPatches.js' + +/* A period range is { startDate, endDate }, YYYY-MM-DD strings in one + * calendar, so they compare as strings */ + +// A fixed period's range, or null for an id that can't be read +export const getPeriodDates = (periodId, calendar = 'gregory') => { + if (isNovemberPeriodId(periodId)) { + return isIsoCalendar(calendar) ? getNovemberPeriodDates(periodId) : null + } + + try { + const { startDate, endDate } = createFixedPeriodFromPeriodId({ + periodId, + calendar, + }) + + return { startDate, endDate } + } catch { + return null + } +} + +/** + * How range `a` relates to range `b`: the same dates, within it, containing + * it, overlapping it, or disjoint. + */ +export const comparePeriodRanges = (a, b) => { + if (a.startDate === b.startDate && a.endDate === b.endDate) { + return PERIOD_RANGE_SAME + } + + if (a.endDate < b.startDate || b.endDate < a.startDate) { + return PERIOD_RANGE_DISJOINT + } + + if (a.startDate >= b.startDate && a.endDate <= b.endDate) { + return PERIOD_RANGE_WITHIN + } + + if (b.startDate >= a.startDate && b.endDate <= a.endDate) { + return PERIOD_RANGE_CONTAINS + } + + return PERIOD_RANGE_OVERLAPS +} + +// The period of `periodType` that holds `date` ({ id, startDate, endDate }), or null +export const getFixedPeriodOfTypeByDate = ( + periodType, + date, + calendar = 'gregory' +) => { + if (isNovemberPeriodType(periodType)) { + return isIsoCalendar(calendar) + ? getNovemberPeriodByDate(periodType, date) + : null + } + + const libraryPeriodType = SERVER_PT_TO_MULTI_CALENDAR_PT[periodType] + + if (!libraryPeriodType) { + return null + } + + try { + return getFixedPeriodByDate({ + periodType: libraryPeriodType, + date, + calendar, + }) + } catch { + return null + } +} + +/** + * The range from the start of the `periodType` period holding the start of + * `range`, to the end of the one holding its end: the whole periods of that + * type that cover it. Null when it can't be told. + */ +export const getCoveringPeriodRange = ( + range, + periodType, + calendar = 'gregory' +) => { + const first = getFixedPeriodOfTypeByDate( + periodType, + range.startDate, + calendar + ) + const last = getFixedPeriodOfTypeByDate(periodType, range.endDate, calendar) + + if (!first || !last) { + return null + } + + return { startDate: first.startDate, endDate: last.endDate } +} + +/** + * Whether a range starts and ends on the edges of `periodType` periods, so + * data of that type fits it exactly (a quarter on monthly data, not a month on + * weekly data). Null when it can't be told. + */ +export const isAlignedWithPeriodType = ( + range, + periodType, + calendar = 'gregory' +) => { + const covering = getCoveringPeriodRange(range, periodType, calendar) + + return covering + ? comparePeriodRanges(covering, range) === PERIOD_RANGE_SAME + : null +} diff --git a/src/modules/dataItemProfile/periods/periodTypes.js b/src/modules/dataItemProfile/periods/periodTypes.js new file mode 100644 index 000000000..b52fc400a --- /dev/null +++ b/src/modules/dataItemProfile/periods/periodTypes.js @@ -0,0 +1,146 @@ +import { + FINANCIAL_YEAR_START_TO_PERIOD_TYPE, + SERVER_PT_TO_MULTI_CALENDAR_PT, + WEEKLY_START_TO_PERIOD_TYPE, +} from '../../../components/PeriodDimension/utils/enabledPeriodTypes.js' +import { PERIOD_TYPE_REGEX } from '../../../components/PeriodDimension/utils/fixedPeriods.js' +import { getRelativePeriodsDetails } from '../../../components/PeriodDimension/utils/relativePeriods.js' +import { PERIOD_TYPE_FREQUENCY_ORDER, PERIOD_TYPES } from '../constants.js' + +const PERIOD_TYPE_NAMES = new Set(PERIOD_TYPES) + +export const isPeriodType = (value) => PERIOD_TYPE_NAMES.has(value) + +export const getFrequencyOrder = (periodType) => + PERIOD_TYPE_FREQUENCY_ORDER[periodType] + +// For sorting: shortest period type first +export const compareByFrequency = (a, b) => + getFrequencyOrder(a) - getFrequencyOrder(b) + +export const sortPeriodTypes = (periodTypes) => + [...periodTypes].sort( + (a, b) => + compareByFrequency(a, b) || + PERIOD_TYPES.indexOf(a) - PERIOD_TYPES.indexOf(b) + ) + +/** + * Whether analytics adds up values of data sets with `dataPeriodType` into + * periods of `queryPeriodType`: it does into the same type and into any + * longer type (a higher frequencyOrder), even when the periods don't nest + * (Wednesday weeks into BiWeekly, checked by the test tool). A type of the + * same length gets nothing (Wednesday weeks asked by Monday week). Null when + * either type is unknown. + */ +export const canAggregateInto = (dataPeriodType, queryPeriodType) => { + if (!isPeriodType(dataPeriodType) || !isPeriodType(queryPeriodType)) { + return null + } + + return ( + dataPeriodType === queryPeriodType || + getFrequencyOrder(queryPeriodType) > getFrequencyOrder(dataPeriodType) + ) +} + +/* VERSION-TOGGLE: remove when 41 is the lowest supported version. Analytics + * fails on QuarterlyNov periods in 2.40 ("Can't find resource for bundle … + * key format.QuarterlyNov.startDate"), and answers from 2.41. */ +const MIN_MINOR_VERSION_BY_PERIOD_TYPE = { QuarterlyNov: 41 } + +// Without a server version, every type counts as supported +export const isPeriodTypeSupported = (periodType, serverVersion) => + !serverVersion || + serverVersion.major > 2 || + serverVersion.minor >= (MIN_MINOR_VERSION_BY_PERIOD_TYPE[periodType] ?? 0) + +const SERVER_PERIOD_TYPE_BY_LIBRARY_TYPE = Object.fromEntries( + Object.entries(SERVER_PT_TO_MULTI_CALENDAR_PT).map( + ([serverType, libraryType]) => [libraryType, serverType] + ) +) + +/* The period picker's PERIOD_TYPE_REGEX leaves out the November quarters and + * six-months, since it doesn't offer them; analytics answers them */ +const PERIOD_ID_PATTERNS = [ + ...Object.entries(PERIOD_TYPE_REGEX).map(([libraryType, regex]) => [ + SERVER_PERIOD_TYPE_BY_LIBRARY_TYPE[libraryType], + regex, + ]), + ['QuarterlyNov', /^(\d{4})NovQ([1-4])$/], + ['SixMonthlyNov', /^(\d{4})NovS([12])$/], +] + +export const getPeriodTypeOfPeriodId = (periodId) => + PERIOD_ID_PATTERNS.find(([, regex]) => regex.test(periodId))?.[0] ?? null + +const WEEKLY_PERIOD_TYPES = PERIOD_TYPES.filter((type) => + type.startsWith('Weekly') +) +const FINANCIAL_PERIOD_TYPES = PERIOD_TYPES.filter((type) => + type.startsWith('Financial') +) + +// The period type of each relative period category; weeks and financial years depend on a setting +const PERIOD_TYPE_BY_RELATIVE_CATEGORY = { + DAILY: 'Daily', + BIWEEKLY: 'BiWeekly', + MONTHLY: 'Monthly', + BIMONTHLY: 'BiMonthly', + QUARTERLY: 'Quarterly', + SIXMONTHLY: 'SixMonthly', + YEARLY: 'Yearly', +} + +/* Relative weeks and financial years follow the analyticsWeeklyStart and + * analyticsFinancialYearStart settings. Without them, every type they could + * be is returned. */ +const getRelativePeriodTypes = (category, options) => { + if (category === 'WEEKLY') { + return options.weeklyPeriodType + ? [options.weeklyPeriodType] + : WEEKLY_PERIOD_TYPES + } + + if (category === 'FINANCIAL') { + return options.financialYearPeriodType + ? [options.financialYearPeriodType] + : FINANCIAL_PERIOD_TYPES + } + + const periodType = PERIOD_TYPE_BY_RELATIVE_CATEGORY[category] + + return periodType ? [periodType] : [] +} + +/** + * The period types a period can be: one for a fixed period or a period type, + * several for a relative period whose type depends on a server setting, none + * when it isn't recognized. + */ +export const getCandidatePeriodTypes = (period, options = {}) => { + if (isPeriodType(period)) { + return [period] + } + + const fixedPeriodType = getPeriodTypeOfPeriodId(period) + + if (fixedPeriodType) { + return [fixedPeriodType] + } + + const category = getRelativePeriodsDetails()[period]?.type + + return category ? getRelativePeriodTypes(category, options) : [] +} + +// The options getCandidatePeriodTypes needs, from the two server settings +export const getRelativePeriodTypeOptions = ({ + analyticsWeeklyStart, + analyticsFinancialYearStart, +} = {}) => ({ + weeklyPeriodType: WEEKLY_START_TO_PERIOD_TYPE[analyticsWeeklyStart], + financialYearPeriodType: + FINANCIAL_YEAR_START_TO_PERIOD_TYPE[analyticsFinancialYearStart], +}) diff --git a/src/modules/dataItemProfile/profile/__tests__/assignedOrgUnitLevels.spec.js b/src/modules/dataItemProfile/profile/__tests__/assignedOrgUnitLevels.spec.js new file mode 100644 index 000000000..7fb8f2f35 --- /dev/null +++ b/src/modules/dataItemProfile/profile/__tests__/assignedOrgUnitLevels.spec.js @@ -0,0 +1,87 @@ +import { + getAssignedOrgUnitLevels, + addAssignedOrgUnitLevels, +} from '../assignedOrgUnitLevels.js' + +const source = (id, assignedOrgUnitCounts) => ({ + dataSet: id && { id, periodType: 'Monthly' }, + elements: [], + reportingRate: false, + ...(assignedOrgUnitCounts && { assignedOrgUnitCounts }), +}) + +describe('getAssignedOrgUnitLevels', () => { + it('gives the levels assigned, deepest first, and the deepest', () => { + expect( + getAssignedOrgUnitLevels([source('formA', { 1: 1, 2: 0, 4: 1159 })]) + ).toEqual({ levels: [4, 1], deepestLevel: 4, hasSeveral: false }) + }) + + it('has several when data sets are assigned at different deepest levels', () => { + expect( + getAssignedOrgUnitLevels([ + source('formA', { 4: 10 }), + source('formB', { 2: 3 }), + ]) + ).toEqual({ levels: [4, 2], deepestLevel: 4, hasSeveral: true }) + }) + + it('has no level without assignments', () => { + expect( + getAssignedOrgUnitLevels([source('formA', {}), source(null)]) + ).toEqual({ + levels: [], + deepestLevel: null, + hasSeveral: false, + }) + }) +}) + +describe('addAssignedOrgUnitLevels', () => { + it('gives each source its counts, and the profile its assigned org unit levels', () => { + const profile = { + sources: [source('formA'), source(null)], + unknown: false, + reasons: [], + assignedPeriodTypes: { types: ['Monthly'] }, + } + + expect(addAssignedOrgUnitLevels(profile, { formA: { 4: 2 } })).toEqual({ + ...profile, + sources: [source('formA', { 4: 2 }), source(null)], + assignedOrgUnitLevels: { + levels: [4], + deepestLevel: 4, + hasSeveral: false, + }, + }) + expect( + addAssignedOrgUnitLevels(profile, {}).sources[0] + .assignedOrgUnitCounts + ).toEqual({}) + }) + + it('gives no levels to a program indicator placed anywhere', () => { + const placedAnywhere = { + dataSet: null, + program: { id: 'programAAA' }, + orgUnitField: 'REGISTRATION', + elements: [], + reportingRate: false, + } + + expect( + addAssignedOrgUnitLevels( + { sources: [placedAnywhere] }, + { programAAA: { 4: 2 } } + ) + ).toEqual({ + sources: [placedAnywhere], + assignedOrgUnitLevels: { + levels: [], + deepestLevel: null, + hasSeveral: false, + }, + }) + }) +}) diff --git a/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js b/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js new file mode 100644 index 000000000..1e12b5de1 --- /dev/null +++ b/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js @@ -0,0 +1,55 @@ +import { canBeAtAnyOrgUnit, getSourceId } from '../sources.js' + +const getLevelsWithUnits = (countsByLevel = {}) => + Object.keys(countsByLevel) + .map(Number) + .filter((level) => countsByLevel[level] > 0) + +/** + * The org unit levels an item's data sets and programs are assigned at, + * deepest first, from each source's `assignedOrgUnitCounts`; the deepest + * (`deepestLevel`); and whether sources have different deepest levels + * (`hasSeveral`). + */ +export const getAssignedOrgUnitLevels = (sources) => { + const levelsBySource = sources + .filter(({ assignedOrgUnitCounts }) => assignedOrgUnitCounts) + .map(({ assignedOrgUnitCounts }) => + getLevelsWithUnits(assignedOrgUnitCounts) + ) + const levels = [...new Set(levelsBySource.flat())].sort((a, b) => b - a) + const deepestOfEach = levelsBySource + .filter((sourceLevels) => sourceLevels.length) + .map((sourceLevels) => Math.max(...sourceLevels)) + + return { + levels, + deepestLevel: levels[0] ?? null, + hasSeveral: new Set(deepestOfEach).size > 1, + } +} + +/** + * The profile with its assigned org unit levels, from the number of org units + * each data set or program is assigned to per level (`{ [sourceId]: + * { [level]: count } }`, as fetchAssignedOrgUnitCounts gives them): each + * source gains its `assignedOrgUnitCounts`, except program indicators whose + * values can be at any org unit. + */ +export const addAssignedOrgUnitLevels = (profile, assignedOrgUnitCounts) => { + const sources = profile.sources.map((source) => + getSourceId(source) && !canBeAtAnyOrgUnit(source) + ? { + ...source, + assignedOrgUnitCounts: + assignedOrgUnitCounts[getSourceId(source)] ?? {}, + } + : source + ) + + return { + ...profile, + sources, + assignedOrgUnitLevels: getAssignedOrgUnitLevels(sources), + } +} diff --git a/src/modules/dataItemProfile/profile/assignedPeriodTypes.js b/src/modules/dataItemProfile/profile/assignedPeriodTypes.js new file mode 100644 index 000000000..cdbcb8850 --- /dev/null +++ b/src/modules/dataItemProfile/profile/assignedPeriodTypes.js @@ -0,0 +1,39 @@ +import { PERIOD_TYPES } from '../constants.js' +import { + canAggregateInto, + isPeriodType, + sortPeriodTypes, +} from '../periods/periodTypes.js' + +// The source's period type, or null for a program, an element in no data set, or an unknown type +export const getSourcePeriodType = ({ dataSet }) => + isPeriodType(dataSet?.periodType) ? dataSet.periodType : null + +/* The shortest query type that every type adds up into: the longest of them + * when they nest, the next type up when two have the same length (Monday and + * Wednesday weeks: BiWeekly) */ +const getShortestDirectType = (periodTypes) => + sortPeriodTypes(PERIOD_TYPES).find((queryPeriodType) => + periodTypes.every((periodType) => + canAggregateInto(periodType, queryPeriodType) + ) + ) ?? null + +/** + * The period types of the data sets an item is assigned to, shortest first; + * `shortestDirectType`, the shortest type at which every value adds up + * directly (shorter ones get repeated or earlier values, or none, see + * getDataItemProfilePeriodCompatibility), or null when nothing is assigned by + * period (event data); and whether there are several types (`hasSeveral`). + */ +export const getAssignedPeriodTypes = (sources) => { + const types = sortPeriodTypes([ + ...new Set(sources.map(getSourcePeriodType).filter(Boolean)), + ]) + + return { + types, + shortestDirectType: types.length ? getShortestDirectType(types) : null, + hasSeveral: types.length > 1, + } +} diff --git a/src/modules/dataItemProfile/profile/collectSources.js b/src/modules/dataItemProfile/profile/collectSources.js new file mode 100644 index 000000000..1dcfce3b1 --- /dev/null +++ b/src/modules/dataItemProfile/profile/collectSources.js @@ -0,0 +1,242 @@ +import { + DIMENSION_TYPE_DATA_ELEMENT, + DIMENSION_TYPE_DATA_ELEMENT_OPERAND, + DIMENSION_TYPE_EVENT_DATA_ITEM, + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, + DIMENSION_TYPE_INDICATOR, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE, + DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, + DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, + DIMENSION_TYPE_PROGRAM_INDICATOR, +} from '../../dataTypes.js' +import { + DIMENSION_TYPE_REPORTING_RATE, + NOT_AGGREGATABLE_AGGREGATION_TYPES, + OPERAND_TYPE_UNKNOWN, + PROFILE_REASON_MISSING_METADATA, + PROFILE_REASON_MISSING_PROGRAM, + PROFILE_REASON_NO_DATA_SET, + PROFILE_REASON_NOT_AGGREGATABLE, + PROFILE_REASON_UNKNOWN_OPERAND, + PROFILE_REASON_UNSUPPORTED_ITEM_TYPE, +} from '../constants.js' +import { parseExpressionOperands } from '../expressionOperands.js' +import { + addElementToSource, + addReason, + checkDataSetPeriodType, + createCollector, + getDataSetSource, + getProgramSource, + getUnassignedElementSource, +} from './sourceCollector.js' + +/* How each aggregation type aggregates over time, when it differs from the + * type itself (dhis2-core AnalyticsAggregationType.fromAggregationType) */ +const PERIOD_AGGREGATION_BY_AGGREGATION_TYPE = { + AVERAGE_SUM_ORG_UNIT: 'AVERAGE', + LAST_AVERAGE_ORG_UNIT: 'LAST', + LAST_LAST_ORG_UNIT: 'LAST', + LAST_IN_PERIOD_AVERAGE_ORG_UNIT: 'LAST_IN_PERIOD', + FIRST_AVERAGE_ORG_UNIT: 'FIRST', + FIRST_FIRST_ORG_UNIT: 'FIRST', + MAX_SUM_ORG_UNIT: 'MAX', + MIN_SUM_ORG_UNIT: 'MIN', +} + +export const getPeriodAggregationType = (aggregationType) => + PERIOD_AGGREGATION_BY_AGGREGATION_TYPE[aggregationType] ?? aggregationType + +const addDataElement = ( + collector, + metadata, + { id, operand, aggregationType: aggregationTypeOverride } +) => { + const dataElement = metadata.dataElements?.[id] + + if (!dataElement) { + addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) + return + } + + const aggregationType = + aggregationTypeOverride ?? dataElement.aggregationType + const dataSets = dataElement.dataSets ?? [] + /* `operand`: the disaggregation analytics is asked for (de.coc), if any. + * `aggregationLevels`: the org unit levels values from lower levels stop at */ + const element = { + id, + ...(operand && { operand }), + aggregationType, + periodAggregationType: getPeriodAggregationType(aggregationType), + ...(dataElement.aggregationLevels?.length && { + aggregationLevels: dataElement.aggregationLevels, + }), + } + + if (NOT_AGGREGATABLE_AGGREGATION_TYPES.has(aggregationType)) { + addReason(collector, { code: PROFILE_REASON_NOT_AGGREGATABLE, id }) + } + + if (!dataSets.length) { + addReason(collector, { code: PROFILE_REASON_NO_DATA_SET, id }) + addElementToSource(getUnassignedElementSource(collector, id), element) + } + + dataSets.forEach((dataSet) => { + checkDataSetPeriodType(collector, id, dataSet.periodType) + addElementToSource(getDataSetSource(collector, dataSet), element) + }) +} + +const addReportingRate = (collector, metadata, dataSetId) => { + const periodType = metadata.dataSets?.[dataSetId]?.periodType + + if (!periodType) { + addReason(collector, { + code: PROFILE_REASON_MISSING_METADATA, + id: dataSetId, + }) + return + } + + checkDataSetPeriodType(collector, dataSetId, periodType) + getDataSetSource(collector, { + id: dataSetId, + periodType, + }).reportingRate = true +} + +const addProgramIndicator = (collector, metadata, id) => { + const programIndicator = metadata.programIndicators?.[id] + + if (!programIndicator?.program) { + addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) + return + } + + getProgramSource(collector, metadata, { + id: programIndicator.program, + orgUnitField: programIndicator.orgUnitField, + missingPeriodBoundaries: programIndicator.hasPeriodBoundaries === false, + }) +} + +// An event or tracker item named by its program: program.element, program.attribute… +const addProgramItem = (collector, metadata, id) => { + if (!id.includes('.')) { + addReason(collector, { code: PROFILE_REASON_MISSING_PROGRAM, id }) + return + } + + getProgramSource(collector, metadata, { id: id.split('.')[0] }) +} + +const addExpression = (collector, metadata, expression) => + parseExpressionOperands(expression).forEach((operand) => { + switch (operand.type) { + case DIMENSION_TYPE_DATA_ELEMENT: + addDataElement(collector, metadata, operand) + break + case DIMENSION_TYPE_REPORTING_RATE: + addReportingRate(collector, metadata, operand.id) + break + case DIMENSION_TYPE_INDICATOR: + addIndicator(collector, metadata, operand.id) + break + case DIMENSION_TYPE_PROGRAM_INDICATOR: + addProgramIndicator(collector, metadata, operand.id) + break + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: + addProgramItem(collector, metadata, operand.id) + break + case OPERAND_TYPE_UNKNOWN: + addReason(collector, { + code: PROFILE_REASON_UNKNOWN_OPERAND, + token: operand.token, + }) + break + default: + // Constants, org unit groups and [days] have no source + } + }) + +const addIndicator = (collector, metadata, id) => { + // Nested indicators (N{}) can refer to each other + if (collector.visitedIndicators.has(id)) { + return + } + collector.visitedIndicators.add(id) + + const indicator = metadata.indicators?.[id] + + if (!indicator) { + addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) + return + } + + addExpression(collector, metadata, indicator.numerator) + addExpression(collector, metadata, indicator.denominator) +} + +const addExpressionDimensionItem = (collector, metadata, id) => { + const expression = metadata.expressionDimensionItems?.[id]?.expression + + if (expression === undefined) { + addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) + return + } + + addExpression(collector, metadata, expression) +} + +/** + * The sources of a data item ({ id, dimensionItemType }), from its metadata + * (fetchDataItemProfileMetadata), with the reasons the profile can't be told + * or should note. + */ +export const collectSources = ({ id, dimensionItemType }, metadata) => { + const collector = createCollector() + + switch (dimensionItemType) { + case DIMENSION_TYPE_DATA_ELEMENT: + case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: + addDataElement(collector, metadata, { + id: id.split('.')[0], + ...(id.includes('.') && { operand: id }), + }) + break + case DIMENSION_TYPE_REPORTING_RATE: + addReportingRate(collector, metadata, id.split('.')[0]) + break + case DIMENSION_TYPE_INDICATOR: + addIndicator(collector, metadata, id) + break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + addExpressionDimensionItem(collector, metadata, id) + break + case DIMENSION_TYPE_PROGRAM_INDICATOR: + addProgramIndicator(collector, metadata, id) + break + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION: + case DIMENSION_TYPE_EVENT_DATA_ITEM: + addProgramItem(collector, metadata, id) + break + default: + addReason(collector, { + code: PROFILE_REASON_UNSUPPORTED_ITEM_TYPE, + id, + dimensionItemType, + }) + } + + return { + sources: [...collector.sources.values()], + reasons: collector.reasons, + } +} diff --git a/src/modules/dataItemProfile/profile/sourceCollector.js b/src/modules/dataItemProfile/profile/sourceCollector.js new file mode 100644 index 000000000..ba3a36a68 --- /dev/null +++ b/src/modules/dataItemProfile/profile/sourceCollector.js @@ -0,0 +1,95 @@ +import { + PROFILE_REASON_MISSING_METADATA, + PROFILE_REASON_UNKNOWN_PERIOD_TYPE, +} from '../constants.js' +import { isPeriodType } from '../periods/periodTypes.js' +import { usesProgramOrgUnits } from '../sources.js' + +/* Sources, by key: one per data set; one per program, and per way its + * indicators place values; one per data element in no data set */ + +export const createCollector = () => ({ + sources: new Map(), + reasons: [], + visitedIndicators: new Set(), +}) + +export const addReason = (collector, reason) => collector.reasons.push(reason) + +const getSource = (collector, key, createSource) => { + if (!collector.sources.has(key)) { + collector.sources.set(key, createSource()) + } + + return collector.sources.get(key) +} + +export const getDataSetSource = (collector, { id, periodType }) => + getSource(collector, `dataSet:${id ?? periodType}`, () => ({ + dataSet: { id, periodType }, + elements: [], + reportingRate: false, + })) + +export const getUnassignedElementSource = (collector, elementId) => + getSource(collector, `element:${elementId}`, () => ({ + dataSet: null, + elements: [], + reportingRate: false, + })) + +/* A program is a source of its own: events and enrollments are placed by + * their own dates, so it has no period type, and by the org units it's + * assigned to. A program indicator that places values elsewhere, or has no + * period boundaries, is a source apart. */ +export const getProgramSource = ( + collector, + metadata, + { id, orgUnitField, missingPeriodBoundaries = false } +) => { + if (!metadata.programs?.[id]) { + addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) + return + } + + const atAnyOrgUnit = !usesProgramOrgUnits(orgUnitField) + const key = [ + `program:${id}`, + atAnyOrgUnit && orgUnitField, + missingPeriodBoundaries && 'missingPeriodBoundaries', + ] + .filter(Boolean) + .join(':') + + getSource(collector, key, () => ({ + dataSet: null, + program: { id }, + ...(atAnyOrgUnit && { orgUnitField }), + ...(missingPeriodBoundaries && { missingPeriodBoundaries }), + elements: [], + reportingRate: false, + })) +} + +export const addElementToSource = (source, element) => { + const isListed = source.elements.some( + ({ id, operand, aggregationType }) => + id === element.id && + operand === element.operand && + aggregationType === element.aggregationType + ) + + if (!isListed) { + source.elements.push(element) + } +} + +export const checkDataSetPeriodType = (collector, id, periodType) => { + if (!isPeriodType(periodType)) { + addReason(collector, { + code: PROFILE_REASON_UNKNOWN_PERIOD_TYPE, + id, + periodType, + }) + } +} diff --git a/src/modules/dataItemProfile/sources.js b/src/modules/dataItemProfile/sources.js index d7bbeb50a..465330584 100644 --- a/src/modules/dataItemProfile/sources.js +++ b/src/modules/dataItemProfile/sources.js @@ -1,6 +1,12 @@ -/* A profile source is a data set ({ dataSet, elements, reportingRate }) or a - * program ({ program, elements: [], reportingRate: false }), or an element in - * no data set (dataSet null) */ +import { PROGRAM_ORG_UNIT_FIELDS } from './constants.js' + +/* A profile source is where an item's data comes from: + * - a data set: { dataSet: { id, periodType }, elements, reportingRate }; + * - a program: { dataSet: null, program: { id }, elements: [], reportingRate: false }, + * with `orgUnitField` when its values can be at any org unit, and + * `missingPeriodBoundaries` for a program indicator without them; + * - a data element in no data set: { dataSet: null, elements, reportingRate: false }, + * which nothing collects. */ export const isProgramSource = ({ program }) => Boolean(program) @@ -8,24 +14,44 @@ export const isProgramSource = ({ program }) => Boolean(program) export const getSourceId = ({ dataSet, program }) => dataSet?.id ?? program?.id ?? null -/* A program indicator's orgUnitField places values by the event's or - * enrollment's org unit (unset, EVENT, ENROLLMENT), or by the owner's, which - * fall back to it: those are where the program is assigned. REGISTRATION and - * an org unit data element or attribute (its id) can be anywhere. */ -const BOUNDED_ORG_UNIT_FIELDS = [ - 'EVENT', - 'ENROLLMENT', - 'OWNER_AT_START', - 'OWNER_AT_END', -] - -export const isBoundedOrgUnitField = (orgUnitField) => - !orgUnitField || BOUNDED_ORG_UNIT_FIELDS.includes(orgUnitField) - -// Whether a source's values can be at any org unit, its assignment aside -export const isPlacedAnywhere = ({ orgUnitField }) => - !isBoundedOrgUnitField(orgUnitField) - -// The metadata field units are assigned to a source by, for counts -export const getSourceField = (source) => +// The org unit field that lists the org units a source is assigned to +export const getAssignmentField = (source) => isProgramSource(source) ? 'programs' : 'dataSets' + +// Whether a program indicator's orgUnitField places values where its program is assigned +export const usesProgramOrgUnits = (orgUnitField) => + !orgUnitField || PROGRAM_ORG_UNIT_FIELDS.has(orgUnitField) + +// Whether a source's values can be at any org unit, wherever it is assigned +export const canBeAtAnyOrgUnit = ({ orgUnitField }) => + !usesProgramOrgUnits(orgUnitField) + +/** + * The operands an item's value is computed from: each data element (by id + * and aggregation type) with the sources it is in, each reporting rate, and + * each program. An expression needs them all; one element adds up over its + * sources. + */ +export const getItemOperands = (profile) => { + const elements = new Map() + + profile.sources.forEach((source) => + source.elements.forEach((element) => { + const key = `${element.id}:${element.aggregationType}` + const operand = elements.get(key) ?? { element, sources: [] } + + operand.sources.push(source) + elements.set(key, operand) + }) + ) + + return [ + ...elements.values(), + ...profile.sources + .filter(({ reportingRate }) => reportingRate) + .map((source) => ({ reportingRate: true, sources: [source] })), + ...profile.sources + .filter(isProgramSource) + .map((source) => ({ program: true, sources: [source] })), + ] +} From 1f512fce56347cf7e3b0efb85561c7f1847a87e1 Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Mon, 5 Oct 2026 10:51:52 +0200 Subject: [PATCH 3/7] fix: address review of the data item profile check --- package.json | 10 +- src/__demo__/DataItemProfile.reference.js | 22 +- src/__demo__/DataItemProfile.stories.js | 14 +- .../DataItemProfileTypicalUse.stories.js | 3 +- src/__fixtures__/dataItemProfileOrgUnits.js | 168 ++++++++ src/__fixtures__/fakeOrgUnitServer.js | 54 +-- .../__tests__/assignedOrgUnitCounts.spec.js | 79 ++++ .../fetchDataItemProfileMetadata.spec.js | 239 +++--------- .../__tests__/fetchOrgUnitCoverage.spec.js | 174 ++++++--- .../__tests__/metadataQueries.spec.js | 207 ++++++++++ .../__tests__/orgUnitGroupCounts.spec.js | 48 ++- .../__tests__/orgUnitListCounts.spec.js | 73 ++++ .../__tests__/orgUnitQueries.spec.js | 79 +++- .../dataItemProfile/assignedOrgUnitCounts.js | 42 +- .../fetchDataItemProfileMetadata.js | 118 ++++-- .../dataItemProfile/fetchOrgUnitCoverage.js | 286 +++++++++++--- src/api/dataItemProfile/metadataQueries.js | 38 +- src/api/dataItemProfile/orgUnitGroupCounts.js | 106 ++++-- src/api/dataItemProfile/orgUnitListCounts.js | 92 +++++ src/api/dataItemProfile/orgUnitQueries.js | 73 +++- src/api/organisationUnits.js | 2 +- .../__tests__/useDataItemProfiles.spec.js | 138 ++++++- .../DataItemProfile/__tests__/utils.spec.js | 34 +- .../DataItemProfile/useDataItemProfiles.js | 264 ++++++++----- src/components/DataItemProfile/utils.js | 33 +- .../utils/enabledPeriodTypes.js | 2 +- src/index.js | 26 +- .../__tests__/getDataItemProfile.spec.js | 51 +++ .../getDataItemProfileCompatibility.spec.js | 192 +++++++++- .../__tests__/orgUnitFixtures.spec.js | 81 ++-- .../__tests__/periodFixtures.spec.js | 102 +++-- .../dataItemProfile/__tests__/sources.spec.js | 31 +- .../__tests__/combineResults.spec.js | 131 +++++++ ...ataItemProfileOrgUnitCompatibility.spec.js | 359 +++++++----------- .../compatibility/combineResults.js | 108 +++++- .../getDataItemProfileOrgUnitCompatibility.js | 159 ++++++-- .../getDataItemProfilePeriodCompatibility.js | 124 ++++-- .../compatibility/orgUnitSourceResults.js | 55 +-- .../compatibility/periodSourceResults.js | 22 +- src/modules/dataItemProfile/constants.js | 33 +- .../dataItemProfile/expressionOperands.js | 12 +- .../dataItemProfile/getDataItemProfile.js | 8 +- .../getDataItemProfileCompatibility.js | 34 +- .../__tests__/orgUnitSelection.spec.js | 118 ++++-- .../orgUnits/orgUnitSelection.js | 165 +++++--- .../periods/__tests__/calendarDates.spec.js | 22 +- .../periods/__tests__/firstLastValues.spec.js | 17 + .../periods/__tests__/memoize.spec.js | 34 ++ .../periods/__tests__/periodRanges.spec.js | 45 ++- .../periods/__tests__/periodTypes.spec.js | 9 - .../__tests__/relativePeriodRanges.spec.js | 101 +++++ .../dataItemProfile/periods/calendarDates.js | 46 ++- .../periods/firstLastValues.js | 77 ++-- .../dataItemProfile/periods/memoize.js | 25 ++ .../periods/multiCalendarPatches.js | 11 +- .../dataItemProfile/periods/periodRanges.js | 128 ++++--- .../dataItemProfile/periods/periodTypes.js | 23 +- .../periods/relativePeriodRanges.js | 121 ++++++ .../profile/assignedOrgUnitLevels.js | 5 +- .../dataItemProfile/profile/collectSources.js | 206 ++++++---- .../profile/sourceCollector.js | 9 +- src/modules/dataItemProfile/sources.js | 48 ++- yarn.lock | 2 +- 63 files changed, 3714 insertions(+), 1424 deletions(-) create mode 100644 src/__fixtures__/dataItemProfileOrgUnits.js create mode 100644 src/api/dataItemProfile/__tests__/assignedOrgUnitCounts.spec.js create mode 100644 src/api/dataItemProfile/__tests__/metadataQueries.spec.js create mode 100644 src/api/dataItemProfile/__tests__/orgUnitListCounts.spec.js create mode 100644 src/api/dataItemProfile/orgUnitListCounts.js create mode 100644 src/modules/dataItemProfile/periods/__tests__/memoize.spec.js create mode 100644 src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js create mode 100644 src/modules/dataItemProfile/periods/memoize.js create mode 100644 src/modules/dataItemProfile/periods/relativePeriodRanges.js diff --git a/package.json b/package.json index 1dda75a1a..7864ba147 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "styled-jsx": "^4.0.1" }, "dependencies": { - "@dhis2/multi-calendar-dates": "^1.2.2", + "@dhis2/multi-calendar-dates": "^1.3.2", "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", @@ -83,6 +83,14 @@ "!src/**/__demo__/data/**", "!src/__fixtures__/period-types/**", "!src/__fixtures__/org-units/**", + "!src/__fixtures__/fakeOrgUnitServer.js", + "!src/__fixtures__/dataItemProfileMetadata.js", + "!src/__fixtures__/dataItemProfileOrgUnits.js", + "!build/*/__fixtures__/period-types/**", + "!build/*/__fixtures__/org-units/**", + "!build/*/__fixtures__/fakeOrgUnitServer.js", + "!build/*/__fixtures__/dataItemProfileMetadata.js", + "!build/*/__fixtures__/dataItemProfileOrgUnits.js", "docs", "CHANGELOG.md" ], diff --git a/src/__demo__/DataItemProfile.reference.js b/src/__demo__/DataItemProfile.reference.js index 827ec8cd2..e8e4bc17a 100644 --- a/src/__demo__/DataItemProfile.reference.js +++ b/src/__demo__/DataItemProfile.reference.js @@ -4,19 +4,19 @@ import React from 'react' export const STATUS_DEFINITIONS = [ [ 'full', - 'Compatible with all the item’s data sets and programs that collect for the selection: every value comes back (also repeated, from an earlier period, or where only some org units are assigned).', + 'Compatible with all the item’s data sets and programs that apply to the selection: every value comes back (also repeated, from an earlier period, or where only some org units are assigned).', 'Data element in a monthly data set, with aggregation enabled, requested quarterly', 'Indicator whose components are all in data sets assigned at facility level, requested at district level', ], [ 'partial', - 'Compatible with only some of the item’s data sets and programs that collect for the selection: the others’ values are left out. Only for an item in several data sets or programs that differ. For an expression, computed from such an operand (OPERAND_PARTIAL).', + 'Compatible with only some of the item’s data sets and programs that apply to the selection: the others’ values are left out. For an item in several data sets or programs that differ, a selection whose periods or org units don’t all give a value, or a sum where some items give none (OPERAND_EMPTY). For an expression, computed from such an operand (OPERAND_PARTIAL).', 'Data element in a Monday weekly and a Wednesday weekly data set, requested by Monday week', 'Data element in a data set assigned at facility level and one assigned at district level, requested at a facility', ], [ 'none', - 'Compatible with none of the item’s data sets and programs that collect for the selection: no value comes back. For an expression, an operand gives none (OPERAND_EMPTY).', + 'Compatible with none of the item’s data sets and programs that apply to the selection: no value comes back. For an indicator, one side gives no value at all (OPERAND_EMPTY).', 'Data element in a monthly data set, requested weekly', 'Data element in a data set assigned at district level, requested at a facility', ], @@ -31,8 +31,8 @@ export const STATUS_DEFINITIONS = [ export const PERIOD_REASON_DEFINITIONS = [ [ 'OPERAND_EMPTY', - 'An expression whose operand gives no value has none: a ratio without its denominator.', - 'none', + 'An operand gives no value: a sum misses it (it counts as 0), a side where all are missing has none (a ratio without its denominator).', + 'partial, none', 'ANC 1 Coverage by week: ANC 1st visit is monthly', ], [ @@ -106,9 +106,9 @@ export const PERIOD_REASON_DEFINITIONS = [ export const ORG_UNIT_REASON_DEFINITIONS = [ [ 'NOT_ASSIGNED', - 'Not assigned there, though assigned at that level elsewhere.', + 'Neither the org unit nor its ancestors are assigned.', 'none', - 'ANC 1st visit at Junctionla MCHP', + 'An event program’s indicator at a facility the program isn’t assigned to', ], [ 'ASSIGNED_AT_HIGHER_LEVEL', @@ -122,6 +122,12 @@ export const ORG_UNIT_REASON_DEFINITIONS = [ 'none, partial', 'Facility data with aggregation level 2, requested by district', ], + [ + 'NO_ORG_UNITS_AT_LEVEL', + 'No org unit at the level asked under the parent org units, or no group member under them: analytics returns nothing there.', + 'none', + 'LEVEL-2 under a facility', + ], [ 'EMPTY_GROUP', 'An org unit group without members: analytics refuses it (E7143). Leave it out of the request.', @@ -130,7 +136,7 @@ export const ORG_UNIT_REASON_DEFINITIONS = [ ], [ 'PARTLY_ASSIGNED', - 'Assigned to only some org units at the deepest level: the others collect nothing, so nothing is left out.', + 'Assigned to only some org units at the deepest level: the others aren’t assigned, so nothing is left out.', 'full', 'ANC 1st visit in Sierra Leone: 1,159 of 1,166 facilities', ], diff --git a/src/__demo__/DataItemProfile.stories.js b/src/__demo__/DataItemProfile.stories.js index 0dbcd3496..e32be0be1 100644 --- a/src/__demo__/DataItemProfile.stories.js +++ b/src/__demo__/DataItemProfile.stories.js @@ -93,7 +93,13 @@ export const ProfilesAndCompatibility = () => { '2025W2, 202501, 2025Q1, 2025, LAST_12_MONTHS, LAST_4_WEEKS, Weekly' ) const periods = useMemo(() => splitList(periodsText), [periodsText]) + // Typed org units apply on blur: each change sends requests const [orgUnitsText, setOrgUnitsText] = useState(ORG_UNIT_SCENARIOS[0][1]) + const [orgUnitsDraft, setOrgUnitsDraft] = useState(orgUnitsText) + const applyOrgUnits = (text) => { + setOrgUnitsDraft(text) + setOrgUnitsText(text) + } const orgUnits = useMemo(() => splitList(orgUnitsText), [orgUnitsText]) const orgUnitItems = readOrgUnitSelection(orgUnits).selectionItems.map( ({ id }) => id @@ -152,8 +158,10 @@ export const ProfilesAndCompatibility = () => {
setOrgUnitsText(value)} + helpText="Applied when the field loses focus" + value={orgUnitsDraft} + onChange={({ value }) => setOrgUnitsDraft(value)} + onBlur={({ value }) => applyOrgUnits(value)} inputWidth="600px" />
@@ -161,7 +169,7 @@ export const ProfilesAndCompatibility = () => { diff --git a/src/__demo__/DataItemProfileTypicalUse.stories.js b/src/__demo__/DataItemProfileTypicalUse.stories.js index ddfd5ef86..c659a6a9d 100644 --- a/src/__demo__/DataItemProfileTypicalUse.stories.js +++ b/src/__demo__/DataItemProfileTypicalUse.stories.js @@ -134,6 +134,7 @@ const ORG_UNIT_NONE_ADVICE = { STOPPED_BY_AGGREGATION_LEVEL: 'Not shown: its aggregation levels stop values before this level.', EMPTY_GROUP: 'Leave it out: the group has no members.', + NO_ORG_UNITS_AT_LEVEL: 'Not shown: no org unit at this level there.', } const getFullAdvice = (reasons, assignment, levels) => { @@ -144,7 +145,7 @@ const getFullAdvice = (reasons, assignment, levels) => { const assignedTo = describeAssignment(assignment, levels) return reasons.includes('PARTLY_ASSIGNED') - ? `Shown: assigned to ${assignedTo}; the others collect nothing.` + ? `Shown: assigned to ${assignedTo}; the others aren’t assigned.` : `Shown: assigned to ${assignedTo}.` } diff --git a/src/__fixtures__/dataItemProfileOrgUnits.js b/src/__fixtures__/dataItemProfileOrgUnits.js new file mode 100644 index 000000000..8df5a1253 --- /dev/null +++ b/src/__fixtures__/dataItemProfileOrgUnits.js @@ -0,0 +1,168 @@ +import { getDataItemProfile } from '../modules/dataItemProfile/getDataItemProfile.js' +import { inDataSets } from './dataItemProfileMetadata.js' + +/* Metadata and org unit coverage for the org unit compatibility specs */ +export const ORG_UNIT_METADATA = { + dataElements: { + facility: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly']), + }, + district: { + aggregationType: 'SUM', + dataSets: inDataSets(['Quarterly']), + }, + twoForms: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Weekly']), + }, + twoLevels: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Quarterly']), + }, + cappedAtDistrict: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly']), + aggregationLevels: [2], + }, + cappedWithDistrictForm: { + aggregationType: 'SUM', + dataSets: inDataSets(['Monthly', 'Quarterly']), + aggregationLevels: [2], + }, + orphan: { aggregationType: 'SUM', dataSets: [] }, + }, + dataSets: { MonthlyForm: { periodType: 'Monthly' } }, + programs: { eventProgra: { programType: 'WITHOUT_REGISTRATION' } }, + programIndicators: { + pi: { program: 'eventProgra' }, + piByOwner: { program: 'eventProgra', orgUnitField: 'OWNER_AT_END' }, + piByRegistr: { program: 'eventProgra', orgUnitField: 'REGISTRATION' }, + piByAttribu: { program: 'eventProgra', orgUnitField: 'attributeAAA' }, + }, + indicators: { + ratio: { numerator: '#{facility}', denominator: '#{district}' }, + facilityPlusDistrict: { + numerator: '#{facility} + #{district}', + denominator: '1', + }, + completeness: { + numerator: '#{facility}', + denominator: 'R{MonthlyForm.REPORTING_RATE}', + }, + partOfTotal: { numerator: '#{twoLevels}', denominator: '#{facility}' }, + casesPerFacility: { numerator: 'I{pi}', denominator: '#{facility}' }, + constantsOnly: { numerator: 'C{constantAA}', denominator: '[days]' }, + }, +} + +export const orgUnitProfileOf = (id, dimensionItemType = 'DATA_ELEMENT') => + getDataItemProfile({ id, dimensionItemType }, ORG_UNIT_METADATA) + +/* A nation (level 1) with 2 districts (2) and 4 facilities (3). + * MonthlyForm: 3 of the 4 facilities (missing facilityDDD, under districtBBB), + * and the nation. QuarterlyForm: both districts. WeeklyForm: facilityDDD. */ +const unit = (id, level, path) => ({ id, level, path }) +export const ORG_UNIT_COVERAGE = { + levels: [ + { id: 'levelNation', level: 1 }, + { id: 'levelDistri', level: 2 }, + { id: 'levelFacili', level: 3 }, + ], + orgUnits: { + nationUnit1: unit('nationUnit1', 1, '/nationUnit1'), + districtAAA: unit('districtAAA', 2, '/nationUnit1/districtAAA'), + districtBBB: unit('districtBBB', 2, '/nationUnit1/districtBBB'), + facilityAAA: unit( + 'facilityAAA', + 3, + '/nationUnit1/districtAAA/facilityAAA' + ), + facilityDDD: unit( + 'facilityDDD', + 3, + '/nationUnit1/districtBBB/facilityDDD' + ), + }, + rootIds: ['nationUnit1'], + userOrgUnitIds: ['districtBBB'], + // clinicGroup: facilityAAA and facilityDDD. mixedGroupA: districtBBB and facilityAAA + groups: { + clinicGroup: { 3: 2 }, + mixedGroupA: { 2: 1, 3: 1 }, + emptyGroupA: {}, + }, + assignedOrgUnitCounts: { + MonthlyForm: { 1: 1, 3: 3 }, + QuarterlyForm: { 2: 2 }, + WeeklyForm: { 3: 1 }, + eventProgra: { 3: 2 }, + }, + counts: { + nationUnit1: { + totals: { 1: 1, 2: 2, 3: 4 }, + sources: { + MonthlyForm: { byLevel: { 1: 1, 3: 3 } }, + QuarterlyForm: { byLevel: { 2: 2 } }, + WeeklyForm: { byLevel: { 3: 1 } }, + eventProgra: { byLevel: { 3: 2 } }, + }, + }, + districtAAA: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 2 }, ancestors: 1 }, + QuarterlyForm: { byLevel: { 2: 1 } }, + WeeklyForm: { byLevel: {} }, + eventProgra: { byLevel: { 3: 2 } }, + }, + }, + districtBBB: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: { 2: 1 } }, + WeeklyForm: { byLevel: { 3: 1 } }, + }, + }, + facilityAAA: { + totals: { 3: 1 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 1 }, + }, + }, + facilityDDD: { + totals: { 3: 1 }, + sources: { + eventProgra: { byLevel: {} }, + MonthlyForm: { byLevel: {}, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 1 }, + WeeklyForm: { byLevel: { 3: 1 } }, + }, + }, + 'clinicGroup:3:': { + totals: { 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, + QuarterlyForm: { byLevel: {}, ancestors: 2 }, + }, + }, + 'mixedGroupA:2:': { + totals: { 2: 1, 3: 2 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + 'mixedGroupA:3:': { + totals: { 3: 1 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + 'mixedGroupA:2:districtAAA': { + totals: { 2: 0, 3: 0 }, + sources: { MonthlyForm: { byLevel: { 3: 0 }, ancestors: 1 } }, + }, + 'mixedGroupA:3:districtAAA': { + totals: { 3: 1 }, + sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, + }, + }, +} diff --git a/src/__fixtures__/fakeOrgUnitServer.js b/src/__fixtures__/fakeOrgUnitServer.js index 9685efbc2..ddbec57c7 100644 --- a/src/__fixtures__/fakeOrgUnitServer.js +++ b/src/__fixtures__/fakeOrgUnitServer.js @@ -10,55 +10,57 @@ export const createFakeOrgUnitServer = ({ user = {}, levels = [...new Set(orgUnits.map(({ level }) => level))], }) => { - const byId = Object.fromEntries(orgUnits.map((unit) => [unit.id, unit])) + const byId = Object.fromEntries( + orgUnits.map((orgUnit) => [orgUnit.id, orgUnit]) + ) const parentOf = ({ path }) => byId[path.split('/').at(-2)] - const childrenOf = (unit) => - orgUnits.filter((other) => parentOf(other) === unit) + const childrenOf = (orgUnit) => + orgUnits.filter((other) => parentOf(other) === orgUnit) // organisationUnitGroups.id, behind parent. and children. steps - const isInGroup = (unit, field, groupId) => { + const isInGroup = (orgUnit, field, groupId) => { const steps = field.split('.').slice(0, -2) const related = steps.reduce( - (units, step) => - units.flatMap((one) => + (matching, step) => + matching.flatMap((one) => step === 'parent' ? [parentOf(one)].filter(Boolean) : childrenOf(one) ), - [unit] + [orgUnit] ) return related.some(({ id }) => groups[groupId]?.includes(id)) } - const isAssigned = (unit, field, id) => - unit[field.split('.')[0]].includes(id) + const isAssigned = (orgUnit, field, id) => + orgUnit[field.split('.')[0]].includes(id) const FILTERS = { - in: (unit, field, value) => - value.slice(1, -1).split(',').includes(unit[field]), - eq: (unit, field, value) => { + in: (orgUnit, field, value) => + value.slice(1, -1).split(',').includes(orgUnit[field]), + eq: (orgUnit, field, value) => { if (field.endsWith('organisationUnitGroups.id')) { - return isInGroup(unit, field, value) + return isInGroup(orgUnit, field, value) } return ['dataSets.id', 'programs.id'].includes(field) - ? isAssigned(unit, field, value) - : String(unit[field]) === value + ? isAssigned(orgUnit, field, value) + : String(orgUnit[field]) === value }, - like: (unit, field, value) => unit[field].includes(value), + like: (orgUnit, field, value) => orgUnit[field].includes(value), } const applyFilters = (filter) => - [filter].flat().reduce((units, condition) => { + [filter].flat().reduce((matching, condition) => { const [field, operator, ...rest] = condition.split(':') - return units.filter((unit) => - FILTERS[operator](unit, field, rest.join(':')) + return matching.filter((orgUnit) => + FILTERS[operator](orgUnit, field, rest.join(':')) ) }, orgUnits) - const toUnits = (ids = []) => ids.map((id) => byId[id]) + const toOrgUnits = (ids = []) => ids.map((id) => byId[id]) const answer = ({ resource, params }) => { if (resource === 'organisationUnitLevels') { @@ -73,21 +75,21 @@ export const createFakeOrgUnitServer = ({ if (resource === 'me') { return { - organisationUnits: toUnits(user.organisationUnits), - dataViewOrganisationUnits: toUnits( + organisationUnits: toOrgUnits(user.organisationUnits), + dataViewOrganisationUnits: toOrgUnits( user.dataViewOrganisationUnits ), } } - const units = applyFilters(params.filter) + const matching = applyFilters(params.filter) return params.pageSize === 1 ? { - pager: { total: units.length }, - organisationUnits: units.slice(0, 1), + pager: { total: matching.length }, + organisationUnits: matching.slice(0, 1), } - : { organisationUnits: units } + : { organisationUnits: matching } } const createEngine = () => ({ diff --git a/src/api/dataItemProfile/__tests__/assignedOrgUnitCounts.spec.js b/src/api/dataItemProfile/__tests__/assignedOrgUnitCounts.spec.js new file mode 100644 index 000000000..1f1c1505a --- /dev/null +++ b/src/api/dataItemProfile/__tests__/assignedOrgUnitCounts.spec.js @@ -0,0 +1,79 @@ +import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' +import { + fetchAssignedOrgUnitCounts, + getDataItemProfileSourceKeys, +} from '../assignedOrgUnitCounts.js' + +/* A nation with 2 districts and 3 facilities. formMonth: 2 of the 3 + * facilities, and the nation. eventProgra: the 3 facilities. */ +const ORG_UNITS = [ + ['nationUnit1', 1, '/nationUnit1', ['formMonth']], + ['districtAAA', 2, '/nationUnit1/districtAAA', []], + ['districtBBB', 2, '/nationUnit1/districtBBB', []], + ['facilityAAA', 3, '/nationUnit1/districtAAA/facilityAAA', ['formMonth']], + ['facilityBBB', 3, '/nationUnit1/districtAAA/facilityBBB', ['formMonth']], + ['facilityCCC', 3, '/nationUnit1/districtBBB/facilityCCC', []], +].map(([id, level, path, dataSets]) => ({ + id, + level, + path, + dataSets, + programs: level === 3 ? ['eventProgra'] : [], +})) + +const { createEngine } = createFakeOrgUnitServer({ + orgUnits: ORG_UNITS, + levels: [3, 1, 2], +}) + +const dataSets = (...ids) => ids.map((id) => ({ id, field: 'dataSets' })) + +describe('getDataItemProfileSourceKeys', () => { + it('lists the data sets and programs behind profiles, once each', () => { + expect( + getDataItemProfileSourceKeys([ + { + sources: [ + { dataSet: { id: 'formA' } }, + { dataSet: null }, + { dataSet: null, program: { id: 'programA' } }, + { + dataSet: null, + program: { id: 'programB' }, + orgUnitField: 'REGISTRATION', + }, + ], + }, + { sources: [{ dataSet: { id: 'formA' } }] }, + undefined, + ]) + ).toEqual([ + { id: 'formA', field: 'dataSets' }, + { id: 'programA', field: 'programs' }, + ]) + expect(getDataItemProfileSourceKeys()).toEqual([]) + }) +}) + +describe('fetchAssignedOrgUnitCounts', () => { + it('fetches the levels, then counts each source per level', async () => { + const result = await fetchAssignedOrgUnitCounts(createEngine(), [ + ...dataSets('formMonth', 'formNone'), + { id: 'eventProgra', field: 'programs' }, + ]) + + expect(result).toEqual({ + levels: [ + { id: 'level1', level: 1, name: 'Level 1' }, + { id: 'level2', level: 2, name: 'Level 2' }, + { id: 'level3', level: 3, name: 'Level 3' }, + ], + assignedOrgUnitCounts: { + formMonth: { 1: 1, 3: 2 }, + formNone: {}, + eventProgra: { 3: 3 }, + }, + requests: 9, + }) + }) +}) diff --git a/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js b/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js index c7cd654c4..706a0e4e0 100644 --- a/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js +++ b/src/api/dataItemProfile/__tests__/fetchDataItemProfileMetadata.spec.js @@ -1,202 +1,22 @@ -import metadataShapes from '../../../__fixtures__/period-types/metadata-shapes.json' import { getDataItemProfile } from '../../../modules/dataItemProfile/getDataItemProfile.js' import { fetchDataItemProfileMetadata } from '../fetchDataItemProfileMetadata.js' -import { - dataItemProfileMetadataQueries, - normalizeDataItemProfileMetadata, -} from '../metadataQueries.js' +import { normalizeDataItemProfileMetadata } from '../metadataQueries.js' // The metadata responses the test tool recorded on every version -const getResponses = ({ requests }) => - Object.fromEntries(requests.map(({ name, response }) => [name, response])) - -const getRecordedFields = ({ path }) => - new URLSearchParams(path.split('?')[1]).get('fields') - -// The top-level fields of a field list: `a,b[c,d]` gives a and b[c,d] -const splitFields = (fields) => { - const result = [] - let depth = 0 - let current = '' - - for (const character of fields) { - if (character === ',' && depth === 0) { - result.push(current) - current = '' - } else { - depth += { '[': 1, ']': -1 }[character] ?? 0 - current += character - } - } - - return [...result, current] -} - -/* Fields the test tool's export doesn't record yet: their shape on each - * version is unchecked until it does */ -/* Fields the test tool's requests named after a resource don't ask for: - * aggregationLevels has a request of its own (dataElements-aggregationLevels) */ -const NOT_RECORDED = ['aggregationLevels', 'analyticsPeriodBoundaries[id]'] - -describe('normalizeDataItemProfileMetadata', () => { - describe.each(Object.entries(metadataShapes.versions))( - 'the responses of %s', - (_, shapes) => { - const responses = getResponses(shapes) - const metadata = normalizeDataItemProfileMetadata(responses) - const idOfCode = (code) => - responses.dataElements.dataElements.find( - (dataElement) => dataElement.code === code - ).id - - it('give each data element its aggregation type and data sets', () => { - Object.values(metadata.dataElements).forEach((dataElement) => { - expect(typeof dataElement.aggregationType).toBe('string') - dataElement.dataSets.forEach((dataSet) => { - expect(typeof dataSet.id).toBe('string') - expect(typeof dataSet.periodType).toBe('string') - }) - }) - }) - - it('keep one data set per period type, and none for an element in no data set', () => { - expect( - metadata.dataElements[idOfCode('PTT_G3_MW')].dataSets - .map(({ periodType }) => periodType) - .sort() - ).toEqual(['Weekly', 'WeeklyWednesday']) - expect( - metadata.dataElements[idOfCode('PTT_G3_ORPHAN')].dataSets - ).toEqual([]) - }) - - it('give each indicator its expressions', () => { - Object.values(metadata.indicators).forEach((indicator) => { - expect(typeof indicator.numerator).toBe('string') - expect(typeof indicator.denominator).toBe('string') - }) - }) - - it('give each data set its period type', () => { - Object.values(metadata.dataSets).forEach((dataSet) => { - expect(typeof dataSet.periodType).toBe('string') - }) - }) - - it('give each expression dimension item its expression', () => { - Object.values(metadata.expressionDimensionItems).forEach( - (item) => expect(typeof item.expression).toBe('string') - ) - }) - - it('were recorded with every field the library asks for', () => { - shapes.requests - .filter(({ name }) => dataItemProfileMetadataQueries[name]) - .forEach((request) => { - const recorded = splitFields(getRecordedFields(request)) - const asked = splitFields( - dataItemProfileMetadataQueries[request.name].params( - { - ids: [], - } - ).fields - ).filter((field) => !NOT_RECORDED.includes(field)) - - expect(recorded).toEqual(expect.arrayContaining(asked)) - }) - }) - } - ) - - it('tells whether a program indicator has period boundaries', () => { - const { programIndicators } = normalizeDataItemProfileMetadata({ - programIndicators: [ - { id: 'bounded', analyticsPeriodBoundaries: [{ id: 'start' }] }, - { id: 'unbounded', analyticsPeriodBoundaries: [] }, - { id: 'notAsked' }, - ], - }) - - expect(programIndicators.bounded.hasPeriodBoundaries).toBe(true) - expect(programIndicators.unbounded.hasPeriodBoundaries).toBe(false) - expect(programIndicators.notAsked).not.toHaveProperty( - 'hasPeriodBoundaries' - ) - }) - - it('keeps the aggregation levels of a data element that has some', () => { - const { dataElements } = normalizeDataItemProfileMetadata({ - dataElements: [ - { id: 'capped', aggregationLevels: [2] }, - { id: 'free', aggregationLevels: [] }, - ], - }) - - expect(dataElements.capped.aggregationLevels).toEqual([2]) - expect(dataElements.free).not.toHaveProperty('aggregationLevels') - }) - - it('accepts lists, period types as objects and missing fields', () => { - expect( - normalizeDataItemProfileMetadata({ - dataElements: [ - { - id: 'a', - aggregationType: 'SUM', - dataSetElements: [ - { - dataSet: { - id: 'w1', - periodType: { name: 'Weekly' }, - }, - }, - { dataSet: { id: 'w1', periodType: 'Weekly' } }, - { dataSet: { id: 'w2', periodType: 'Weekly' } }, - { dataSet: {} }, - {}, - ], - }, - { id: 'b', aggregationType: 'SUM' }, - ], - dataSets: { gist: true, dataSets: [{ id: 'ds' }] }, - }) - ).toEqual({ - dataElements: { - a: { - aggregationType: 'SUM', - valueType: undefined, - domainType: undefined, - dataSets: [ - { id: 'w1', periodType: 'Weekly' }, - { id: 'w2', periodType: 'Weekly' }, - ], - }, - b: { - aggregationType: 'SUM', - valueType: undefined, - domainType: undefined, - dataSets: [], - }, - }, - dataSets: { ds: { periodType: undefined } }, - indicators: {}, - expressionDimensionItems: {}, - programIndicators: {}, - programs: {}, - }) - }) -}) - describe('fetchDataItemProfileMetadata', () => { const server = { dataElements: { deA: { aggregationType: 'SUM', - dataSetElements: [{ dataSet: { periodType: 'Monthly' } }], + dataSetElements: [ + { dataSet: { id: 'dsMonthly', periodType: 'Monthly' } }, + ], }, dePop: { aggregationType: 'AVERAGE', - dataSetElements: [{ dataSet: { periodType: 'Yearly' } }], + dataSetElements: [ + { dataSet: { id: 'dsYearly', periodType: 'Yearly' } }, + ], }, }, dataSets: { dsA: { periodType: 'Weekly' } }, @@ -366,7 +186,7 @@ describe('fetchDataItemProfileMetadata', () => { ).rejects.toThrow('offline') }) - it('counts the units each data set is assigned to per level, by default', async () => { + it('counts the org units each data set is assigned to per level, by default', async () => { const metadataEngine = createEngine() const engine = { query: jest.fn(async (query, options) => { @@ -382,7 +202,7 @@ describe('fetchDataItemProfileMetadata', () => { } const counts = Object.entries(query).filter(([key]) => - key.startsWith('count') + key.startsWith('query') ) return counts.length @@ -407,7 +227,6 @@ describe('fetchDataItemProfileMetadata', () => { { id: 'dsA.REPORTING_RATE', dimensionItemType: 'REPORTING_RATE' }, ]) - expect(metadata.orgUnitLevels.map(({ level }) => level)).toEqual([1, 2]) expect(metadata.assignedOrgUnitCounts).toMatchObject({ dsA: { 2: 5 } }) expect( getDataItemProfile( @@ -419,4 +238,44 @@ describe('fetchDataItemProfileMetadata', () => { ).assignedOrgUnitLevels ).toEqual({ levels: [2], deepestLevel: 2, hasSeveral: false }) }) + + it('fetches only what the known metadata lacks', async () => { + const engine = createEngine() + const known = await fetchMetadata(engine, [ + { id: 'deA', dimensionItemType: 'DATA_ELEMENT' }, + ]) + + engine.query.mockClear() + const metadata = await fetchDataItemProfileMetadata( + engine, + [ + { id: 'deA', dimensionItemType: 'DATA_ELEMENT' }, + { id: 'dePop', dimensionItemType: 'DATA_ELEMENT' }, + ], + { withAssignedOrgUnitCounts: false, known } + ) + + expect(requestsOf(engine)).toEqual([['dataElements', ['dePop']]]) + expect(Object.keys(metadata.dataElements)).toEqual(['deA', 'dePop']) + }) + + it('reuses known levels and assigned counts', async () => { + const engine = createEngine() + const metadata = await fetchDataItemProfileMetadata( + engine, + [{ id: 'deA', dimensionItemType: 'DATA_ELEMENT' }], + { + known: { + orgUnitLevels: [{ id: 'levelOne111', level: 1 }], + assignedOrgUnitCounts: { dsMonthly: { 1: 3 } }, + }, + } + ) + + expect(requestsOf(engine)).toEqual([['dataElements', ['deA']]]) + expect(metadata).toMatchObject({ + orgUnitLevels: [{ id: 'levelOne111', level: 1 }], + assignedOrgUnitCounts: { dsMonthly: { 1: 3 } }, + }) + }) }) diff --git a/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js b/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js index 178081fbd..2701c7acf 100644 --- a/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js +++ b/src/api/dataItemProfile/__tests__/fetchOrgUnitCoverage.spec.js @@ -1,8 +1,4 @@ import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' -import { - fetchAssignedOrgUnitCounts, - getCountableSources, -} from '../assignedOrgUnitCounts.js' import { fetchOrgUnitCoverage } from '../fetchOrgUnitCoverage.js' /* A nation with 2 districts and 3 facilities. formMonth: 2 of the 3 @@ -42,11 +38,11 @@ const { createEngine } = createFakeOrgUnitServer({ const dataSets = (...ids) => ids.map((id) => ({ id, field: 'dataSets' })) -const fetchFor = (orgUnits, sources = dataSets('formMonth', 'formQuart')) => - fetchOrgUnitCoverage(createEngine(), { sources, orgUnits }) +const fetchFor = (orgUnits, sourceKeys = dataSets('formMonth', 'formQuart')) => + fetchOrgUnitCoverage(createEngine(), { sourceKeys, orgUnits }) describe('fetchOrgUnitCoverage', () => { - it('counts the units and assignments under a unit, per level', async () => { + it('counts the org units and assignments under an org unit, per level', async () => { const coverage = await fetchFor(['districtAAA']) expect(coverage.levels.map(({ level }) => level)).toEqual([1, 2, 3]) @@ -77,19 +73,20 @@ describe('fetchOrgUnitCoverage', () => { totals: { 2: 2 }, sources: { formQuart: { byLevel: { 2: 2 }, ancestors: 0 } }, }) - expect(coverage.requests).toBe(3 + 2) + // Levels and org unit, 3 assigned counts, 2 counts under the nation + expect(coverage.requests).toBe(2 + 3 + 2) }) it('reuses the level counts it is given', async () => { const engine = createEngine() const coverage = await fetchOrgUnitCoverage(engine, { - sources: dataSets('formQuart'), + sourceKeys: dataSets('formQuart'), orgUnits: ['nationUnit1'], assignedOrgUnitCounts: { formQuart: { 2: 2 } }, }) expect(coverage.assignedOrgUnitCounts).toEqual({ formQuart: { 2: 2 } }) - expect(coverage.requests).toBe(2) + expect(coverage.requests).toBe(2 + 2) }) it('loads the roots for a level alone', async () => { @@ -99,13 +96,13 @@ describe('fetchOrgUnitCoverage', () => { expect(coverage.counts.nationUnit1.totals).toEqual({ 1: 1, 2: 2, 3: 3 }) }) - it('loads the user units, from the data view ones first', async () => { + it('loads the user org units, from the data view ones first', async () => { const coverage = await fetchFor(['USER_ORGUNIT_CHILDREN']) expect(coverage.userOrgUnitIds).toEqual(['districtAAA']) }) - it('falls back to the user data capture units', async () => { + it('falls back to the user data capture org units', async () => { const engine = createEngine() const query = engine.query @@ -118,7 +115,7 @@ describe('fetchOrgUnitCoverage', () => { }) const coverage = await fetchOrgUnitCoverage(engine, { - sources: [], + sourceKeys: [], orgUnits: ['USER_ORGUNIT'], }) @@ -149,7 +146,7 @@ describe('fetchOrgUnitCoverage', () => { }) }) - it('counts a group within each boundary at or above its members', async () => { + it('counts a group under each parent at or above its members', async () => { const coverage = await fetchFor( ['districtAAA', 'facilityCCC', 'OU_GROUP-clinicGroup'], dataSets('formMonth') @@ -165,7 +162,20 @@ describe('fetchOrgUnitCoverage', () => { }) }) - it('sends no count without units or data sets', async () => { + it('counts a group under the user org units as parents', async () => { + const coverage = await fetchFor( + ['USER_ORGUNIT', 'OU_GROUP-clinicGroup'], + dataSets('formMonth') + ) + + expect(coverage.rootIds).toEqual([]) + expect(coverage.counts['clinicGroup:3:districtAAA']).toEqual({ + totals: { 3: 1 }, + sources: { formMonth: { byLevel: { 3: 1 }, ancestors: 1 } }, + }) + }) + + it('sends no count without org units or data sets', async () => { expect(await fetchOrgUnitCoverage(createEngine(), {})).toMatchObject({ orgUnits: {}, counts: {}, @@ -174,52 +184,100 @@ describe('fetchOrgUnitCoverage', () => { }) }) -describe('getCountableSources', () => { - it('lists the data sets and programs behind profiles, once each', () => { - expect( - getCountableSources([ - { - sources: [ - { dataSet: { id: 'formA' } }, - { dataSet: null }, - { dataSet: null, program: { id: 'programA' } }, - { - dataSet: null, - program: { id: 'programB' }, - orgUnitField: 'REGISTRATION', - }, - ], - }, - { sources: [{ dataSet: { id: 'formA' } }] }, - undefined, - ]) - ).toEqual([ - { id: 'formA', field: 'dataSets' }, - { id: 'programA', field: 'programs' }, - ]) - expect(getCountableSources()).toEqual([]) +describe('fetchOrgUnitCoverage, for a large selection', () => { + // 60 data sets assigned as formMonth is: over 100 counts under the nation + const formIds = Array.from({ length: 60 }, (_, i) => `form${i}`) + const { createEngine: createLargeEngine } = createFakeOrgUnitServer({ + orgUnits: UNITS.map((orgUnit) => ({ + ...orgUnit, + dataSets: orgUnit.dataSets.includes('formMonth') ? formIds : [], + })), + groups: GROUPS, + }) + + it('counts from lists of each data set’s org units, as the server would', async () => { + const orgUnits = ['nationUnit1', 'OU_GROUP-mixedGroupA'] + const engine = createLargeEngine() + const coverage = await fetchOrgUnitCoverage(engine, { + sourceKeys: dataSets(...formIds), + orgUnits, + }) + const expected = await fetchFor(orgUnits, dataSets('formMonth')) + const sourcesOf = (counted) => + Object.fromEntries( + Object.entries(counted).map(([key, { totals, sources }]) => [ + key, + { totals, sources: sources.form59 ?? sources.formMonth }, + ]) + ) + const listRequests = engine.query.mock.calls.filter(([query]) => + Object.values(query).some(({ params }) => params?.fields === 'path') + ) + + expect(sourcesOf(coverage.counts)).toEqual(sourcesOf(expected.counts)) + expect(listRequests).not.toHaveLength(0) }) }) -describe('fetchAssignedOrgUnitCounts', () => { - it('fetches the levels, then counts each source per level', async () => { - const result = await fetchAssignedOrgUnitCounts(createEngine(), [ - ...dataSets('formMonth', 'formNone'), - { id: 'eventProgra', field: 'programs' }, - ]) - - expect(result).toEqual({ - levels: [ - { id: 'level1', level: 1, name: 'Level 1' }, - { id: 'level2', level: 2, name: 'Level 2' }, - { id: 'level3', level: 3, name: 'Level 3' }, - ], - assignedOrgUnitCounts: { - formMonth: { 1: 1, 3: 2 }, - formNone: {}, - eventProgra: { 3: 3 }, - }, - requests: 9, +describe('fetchOrgUnitCoverage, after an earlier selection', () => { + it('fetches only what the earlier coverage lacks', async () => { + const engine = createEngine() + const previous = await fetchOrgUnitCoverage(engine, { + sourceKeys: dataSets('formMonth'), + orgUnits: ['districtAAA'], + }) + + engine.query.mockClear() + const coverage = await fetchOrgUnitCoverage(engine, { + sourceKeys: dataSets('formMonth'), + orgUnits: ['districtAAA', 'districtBBB'], + previous, + }) + const sent = engine.query.mock.calls.flatMap(([query]) => + Object.values(query) + ) + + expect(coverage.counts.districtAAA).toEqual(previous.counts.districtAAA) + expect(coverage.counts.districtBBB).toBeDefined() + expect( + sent.some(({ resource }) => resource !== 'organisationUnits') + ).toBe(false) + expect( + sent.some(({ params }) => + params.filter.includes?.('path:like:districtAAA') + ) + ).toBe(false) + }) + + it('counts again when the sources change', async () => { + const engine = createEngine() + const previous = await fetchOrgUnitCoverage(engine, { + sourceKeys: dataSets('formMonth'), + orgUnits: ['districtAAA'], + }) + const coverage = await fetchOrgUnitCoverage(engine, { + sourceKeys: dataSets('formMonth', 'formQuart'), + orgUnits: ['districtAAA'], + previous, + }) + + expect(coverage.counts.districtAAA.sources.formQuart).toBeDefined() + expect(coverage.sourceIds).toEqual(['formMonth', 'formQuart']) + }) + + it('reuses the roots and user org units it knows', async () => { + const engine = createEngine() + const previous = await fetchOrgUnitCoverage(engine, { + orgUnits: ['LEVEL-2', 'USER_ORGUNIT'], }) + + engine.query.mockClear() + const coverage = await fetchOrgUnitCoverage(engine, { + orgUnits: ['LEVEL-3', 'USER_ORGUNIT'], + previous, + }) + + expect(engine.query).not.toHaveBeenCalled() + expect(coverage.userOrgUnitIds).toEqual(['districtAAA']) }) }) diff --git a/src/api/dataItemProfile/__tests__/metadataQueries.spec.js b/src/api/dataItemProfile/__tests__/metadataQueries.spec.js new file mode 100644 index 000000000..f7e88155a --- /dev/null +++ b/src/api/dataItemProfile/__tests__/metadataQueries.spec.js @@ -0,0 +1,207 @@ +import metadataShapes from '../../../__fixtures__/period-types/metadata-shapes.json' +import { + dataItemProfileMetadataQueries, + normalizeDataItemProfileMetadata, +} from '../metadataQueries.js' + +const getResponses = ({ requests }) => + Object.fromEntries(requests.map(({ name, response }) => [name, response])) + +const getRecordedFields = ({ path }) => + new URLSearchParams(path.split('?')[1]).get('fields') + +// The top-level fields of a field list: `a,b[c,d]` gives a and b[c,d] +const splitFields = (fields) => { + const result = [] + let depth = 0 + let current = '' + + for (const character of fields) { + if (character === ',' && depth === 0) { + result.push(current) + current = '' + } else { + depth += { '[': 1, ']': -1 }[character] ?? 0 + current += character + } + } + + return [...result, current] +} + +/* Fields the test tool's requests named after a resource don't ask for, so + * their shape on each version is unchecked: aggregationLevels has a request + * of its own (dataElements-aggregationLevels); the others aren't recorded */ +const NOT_RECORDED = [ + 'aggregationLevels', + 'analyticsPeriodBoundaries[id]', + 'missingValueStrategy', +] + +describe('normalizeDataItemProfileMetadata', () => { + describe.each(Object.entries(metadataShapes.versions))( + 'the responses of %s', + (_, shapes) => { + const responses = getResponses(shapes) + const metadata = normalizeDataItemProfileMetadata(responses) + const idOfCode = (code) => + responses.dataElements.dataElements.find( + (dataElement) => dataElement.code === code + ).id + + it('give each data element its aggregation type and data sets', () => { + Object.values(metadata.dataElements).forEach((dataElement) => { + expect(typeof dataElement.aggregationType).toBe('string') + dataElement.dataSets.forEach((dataSet) => { + expect(typeof dataSet.id).toBe('string') + expect(typeof dataSet.periodType).toBe('string') + }) + }) + }) + + it('keep one data set per period type, and none for an element in no data set', () => { + expect( + metadata.dataElements[idOfCode('PTT_G3_MW')].dataSets + .map(({ periodType }) => periodType) + .sort() + ).toEqual(['Weekly', 'WeeklyWednesday']) + expect( + metadata.dataElements[idOfCode('PTT_G3_ORPHAN')].dataSets + ).toEqual([]) + }) + + it('give each indicator its expressions', () => { + Object.values(metadata.indicators).forEach((indicator) => { + expect(typeof indicator.numerator).toBe('string') + expect(typeof indicator.denominator).toBe('string') + }) + }) + + it('give each data set its period type', () => { + Object.values(metadata.dataSets).forEach((dataSet) => { + expect(typeof dataSet.periodType).toBe('string') + }) + }) + + it('give each expression dimension item its expression', () => { + Object.values(metadata.expressionDimensionItems).forEach( + (item) => expect(typeof item.expression).toBe('string') + ) + }) + + it('were recorded with every field the library asks for', () => { + shapes.requests + .filter(({ name }) => dataItemProfileMetadataQueries[name]) + .forEach((request) => { + const recorded = splitFields(getRecordedFields(request)) + const asked = splitFields( + dataItemProfileMetadataQueries[request.name].params( + { + ids: [], + } + ).fields + ).filter((field) => !NOT_RECORDED.includes(field)) + + expect(recorded).toEqual(expect.arrayContaining(asked)) + }) + }) + } + ) + + it('tells whether a program indicator has period boundaries', () => { + const { programIndicators } = normalizeDataItemProfileMetadata({ + programIndicators: [ + { id: 'bounded', analyticsPeriodBoundaries: [{ id: 'start' }] }, + { id: 'unbounded', analyticsPeriodBoundaries: [] }, + { id: 'notAsked' }, + ], + }) + + expect(programIndicators.bounded.hasPeriodBoundaries).toBe(true) + expect(programIndicators.unbounded.hasPeriodBoundaries).toBe(false) + expect(programIndicators.notAsked).not.toHaveProperty( + 'hasPeriodBoundaries' + ) + }) + + it('keeps the aggregation levels of a data element that has some', () => { + const { dataElements } = normalizeDataItemProfileMetadata({ + dataElements: [ + { id: 'capped', aggregationLevels: [2] }, + { id: 'free', aggregationLevels: [] }, + ], + }) + + expect(dataElements.capped.aggregationLevels).toEqual([2]) + expect(dataElements.free).not.toHaveProperty('aggregationLevels') + }) + + it('accepts lists, period types as objects and missing fields', () => { + expect( + normalizeDataItemProfileMetadata({ + dataElements: [ + { + id: 'a', + aggregationType: 'SUM', + dataSetElements: [ + { + dataSet: { + id: 'w1', + periodType: { name: 'Weekly' }, + }, + }, + { dataSet: { id: 'w1', periodType: 'Weekly' } }, + { dataSet: { id: 'w2', periodType: 'Weekly' } }, + { dataSet: {} }, + {}, + ], + }, + { id: 'b', aggregationType: 'SUM' }, + ], + dataSets: { gist: true, dataSets: [{ id: 'ds' }] }, + }) + ).toEqual({ + dataElements: { + a: { + aggregationType: 'SUM', + dataSets: [ + { id: 'w1', periodType: 'Weekly' }, + { id: 'w2', periodType: 'Weekly' }, + ], + }, + b: { + aggregationType: 'SUM', + dataSets: [], + }, + }, + dataSets: { ds: { periodType: undefined } }, + indicators: {}, + expressionDimensionItems: {}, + programIndicators: {}, + programs: {}, + }) + }) + + it('keeps the missing value strategy of an expression dimension item', () => { + expect( + normalizeDataItemProfileMetadata({ + expressionDimensionItems: { + expressionDimensionItems: [ + { + id: 'sumNeedingA', + expression: '#{a}+#{b}', + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + }, + { id: 'sumByDefaul', expression: '#{a}+#{b}' }, + ], + }, + }).expressionDimensionItems + ).toEqual({ + sumNeedingA: { + expression: '#{a}+#{b}', + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + }, + sumByDefaul: { expression: '#{a}+#{b}' }, + }) + }) +}) diff --git a/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js b/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js index f4a23d7ce..d9ab9d2e7 100644 --- a/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js +++ b/src/api/dataItemProfile/__tests__/orgUnitGroupCounts.spec.js @@ -35,11 +35,10 @@ describe('fetchGroupMembersByLevel', () => { }) expect( - await fetchGroupMembersByLevel( - createEngine(), - ['groupAAAAAA', 'emptyGroupA'], - LEVELS - ) + await fetchGroupMembersByLevel(createEngine(), { + groupIds: ['groupAAAAAA', 'emptyGroupA'], + levels: LEVELS, + }) ).toEqual({ groups: { groupAAAAAA: { 2: 1, 3: 1 }, emptyGroupA: {} }, requests: 6, @@ -48,14 +47,19 @@ describe('fetchGroupMembersByLevel', () => { }) describe('getGroupCountQueries', () => { - const queriesFor = (parentOrgUnitIds = []) => + const orgUnitsById = Object.fromEntries( + ORG_UNITS.map((orgUnit) => [orgUnit.id, orgUnit]) + ) + const queriesFor = (parentIds) => getGroupCountQueries({ groups: { groupAAAAAA: { 2: 1 } }, - parentOrgUnitIds, - orgUnits: Object.fromEntries( - ORG_UNITS.map((unit) => [unit.id, unit]) - ), - sources: [FORM_MONTH], + parents: + parentIds?.map((id) => ({ + orgUnitId: id, + minLevel: orgUnitsById[id].level, + })) ?? null, + orgUnits: orgUnitsById, + sourceKeys: [FORM_MONTH], assignedOrgUnitCounts: { formMonth: { 1: 1, 3: 2 } }, }) @@ -82,7 +86,7 @@ describe('getGroupCountQueries', () => { }) }) - it('keeps the members under each parent at or above them', () => { + it('keeps the members, and the org units above them, under each parent at or above them', () => { const filters = filtersOf(queriesFor(['nationUnit1', 'facilityAAA'])) expect(filters['groupAAAAAA:2:nationUnit1|total|2']).toEqual([ @@ -90,8 +94,28 @@ describe('getGroupCountQueries', () => { 'organisationUnitGroups.id:eq:groupAAAAAA', 'level:eq:2', ]) + expect( + filters['groupAAAAAA:2:nationUnit1|formMonth|ancestors'] + ).toEqual([ + 'path:like:nationUnit1', + 'children.organisationUnitGroups.id:eq:groupAAAAAA', + 'level:eq:1', + 'dataSets.id:eq:formMonth', + ]) expect( Object.keys(filters).some((key) => key.includes('facilityAAA')) ).toBe(false) }) + + it('takes the ancestors above a parent from its path', () => { + const filters = filtersOf(queriesFor(['districtAAA'])) + + expect( + filters['groupAAAAAA:2:districtAAA|formMonth|ancestors'] + ).toEqual([ + 'id:in:[nationUnit1]', + 'level:eq:1', + 'dataSets.id:eq:formMonth', + ]) + }) }) diff --git a/src/api/dataItemProfile/__tests__/orgUnitListCounts.spec.js b/src/api/dataItemProfile/__tests__/orgUnitListCounts.spec.js new file mode 100644 index 000000000..91734bba7 --- /dev/null +++ b/src/api/dataItemProfile/__tests__/orgUnitListCounts.spec.js @@ -0,0 +1,73 @@ +import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' +import { createListCounter } from '../orgUnitListCounts.js' + +/* A nation with 2 districts and 3 facilities; formMonth: the nation and 2 + * facilities. The counter must agree with the server on every filter. */ +const UNITS = [ + ['nationUnit1', 1, '/nationUnit1', ['formMonth']], + ['districtAAA', 2, '/nationUnit1/districtAAA', []], + ['districtBBB', 2, '/nationUnit1/districtBBB', []], + ['facilityAAA', 3, '/nationUnit1/districtAAA/facilityAAA', ['formMonth']], + ['facilityBBB', 3, '/nationUnit1/districtAAA/facilityBBB', ['formMonth']], + ['facilityCCC', 3, '/nationUnit1/districtBBB/facilityCCC', []], +].map(([id, level, path, dataSets]) => ({ + id, + level, + path, + dataSets, + programs: [], +})) +const GROUPS = { + clinicGroup: ['facilityAAA', 'facilityCCC'], + mixedGroupA: ['districtBBB', 'facilityAAA'], +} + +const { answer } = createFakeOrgUnitServer({ orgUnits: UNITS, groups: GROUPS }) + +const listOf = (filter) => + answer({ + resource: 'organisationUnits', + params: { filter }, + }).organisationUnits.map(({ path }) => path) + +const ASSIGNED = 'dataSets.id:eq:formMonth' + +describe('createListCounter', () => { + const count = createListCounter( + Object.fromEntries( + Object.keys(GROUPS).map((groupId) => [ + groupId, + listOf(`organisationUnitGroups.id:eq:${groupId}`), + ]) + ) + ) + + it.each([ + [['level:eq:3']], + [['path:like:districtAAA', 'level:eq:3']], + [['id:in:[nationUnit1,districtAAA]']], + [['organisationUnitGroups.id:eq:clinicGroup', 'level:eq:3']], + [['parent.organisationUnitGroups.id:eq:mixedGroupA', 'level:eq:3']], + [['children.organisationUnitGroups.id:eq:clinicGroup', 'level:eq:2']], + [ + [ + 'children.children.organisationUnitGroups.id:eq:mixedGroupA', + 'level:eq:1', + ], + ], + [ + [ + 'path:like:nationUnit1', + 'parent.parent.organisationUnitGroups.id:eq:mixedGroupA', + ], + ], + ])('counts %j as the server does', (filter) => { + expect(count(listOf(ASSIGNED), filter)).toBe( + listOf([...filter, ASSIGNED]).length + ) + }) + + it('counts nothing for a filter it cannot evaluate', () => { + expect(count(listOf(ASSIGNED), ['name:eq:Nation'])).toBe(0) + }) +}) diff --git a/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js b/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js index 1ef2066c9..7ddb11d1f 100644 --- a/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js +++ b/src/api/dataItemProfile/__tests__/orgUnitQueries.spec.js @@ -30,15 +30,80 @@ describe('orgUnitQueries', () => { ) }) - it('sends every query in one request, keyed by position', async () => { - const engine = { query: jest.fn(async () => ({ count0: 1 })) } + const createEngine = () => ({ + query: jest.fn(async (query) => + Object.fromEntries( + Object.entries(query).map(([key, { params }]) => [ + key, + { pager: { total: params.filter.length } }, + ]) + ) + ), + }) + + it('gives the responses in the order of the queries', async () => { + const engine = createEngine() + const signal = new AbortController().signal + + expect( + await queryAll( + engine, + [ + ['a', countQuery(['level:eq:1', 'level:eq:2'])], + ['b', countQuery(['level:eq:3'])], + ], + { signal } + ) + ).toEqual({ + responses: [{ pager: { total: 2 } }, { pager: { total: 1 } }], + requests: 2, + }) + expect(engine.query).toHaveBeenCalledWith( + { + query0: countQuery(['level:eq:1', 'level:eq:2']), + query1: countQuery(['level:eq:3']), + }, + { signal } + ) + }) + + it('sends identical queries once', async () => { + const engine = createEngine() + const { responses, requests } = await queryAll(engine, [ + ['a', countQuery(['level:eq:1'])], + ['b', countQuery(['level:eq:1'])], + ]) + + expect(responses).toEqual([ + { pager: { total: 1 } }, + { pager: { total: 1 } }, + ]) + expect(requests).toBe(1) + }) + + it('sends batches of 100 queries, one after the other', async () => { + const engine = createEngine() + const queries = Array.from({ length: 250 }, (_, i) => [ + i, + countQuery([`level:eq:${i}`]), + ]) + const { responses, requests } = await queryAll(engine, queries) + + expect(requests).toBe(250) + expect(responses).toHaveLength(250) + expect( + engine.query.mock.calls.map(([query]) => Object.keys(query).length) + ).toEqual([100, 100, 50]) + }) + + it('sends nothing without queries', async () => { + const engine = createEngine() - expect(await queryAll(engine, [['a', countQuery([])]])).toEqual({ - count0: 1, + expect(await queryAll(engine, [])).toEqual({ + responses: [], + requests: 0, }) - expect(engine.query).toHaveBeenCalledWith({ count0: countQuery([]) }) - expect(await queryAll(engine, [])).toEqual({}) - expect(engine.query).toHaveBeenCalledTimes(1) + expect(engine.query).not.toHaveBeenCalled() }) it('sorts the levels', () => { diff --git a/src/api/dataItemProfile/assignedOrgUnitCounts.js b/src/api/dataItemProfile/assignedOrgUnitCounts.js index 4f8a37cf5..6a4ddc21c 100644 --- a/src/api/dataItemProfile/assignedOrgUnitCounts.js +++ b/src/api/dataItemProfile/assignedOrgUnitCounts.js @@ -13,12 +13,12 @@ import { } from './orgUnitQueries.js' /** - * The data sets and programs behind profiles (getDataItemProfile results) - * whose assignment can be counted: `[{ id, field }]`, `field` being the org - * unit field that lists them (dataSets or programs). Program indicators - * whose values can be at any org unit are left out. + * The source keys of profiles (getDataItemProfile results): the data sets and + * programs whose assignment can be counted, as `[{ id, field }]`, `field` + * being the org unit field that lists them (dataSets or programs). Program + * indicators whose values can be at any org unit are left out. */ -export const getCountableSources = (profiles = []) => [ +export const getDataItemProfileSourceKeys = (profiles = []) => [ ...new Map( profiles .flatMap((profile) => profile?.sources ?? []) @@ -33,27 +33,35 @@ export const getCountableSources = (profiles = []) => [ ] /** - * The number of org units each data set or program (`sources`, from - * getCountableSources) is assigned to, per level, across the hierarchy: one - * count per source and level. `levels` are fetched when not given. Gives + * The number of org units each data set or program (`sourceKeys`, from + * getDataItemProfileSourceKeys) is assigned to, per level, across the hierarchy: one + * count per source and level. `levels` are fetched when not given; `signal` + * cancels the requests. Gives * `{ levels, assignedOrgUnitCounts: { [sourceId]: { [level]: count } }, * requests }`. */ -export const fetchAssignedOrgUnitCounts = async (engine, sources, levels) => { - const knownLevels = levels ?? readLevels(await engine.query(levelsQuery)) - const queries = sources.flatMap((source) => +export const fetchAssignedOrgUnitCounts = async ( + engine, + sourceKeys, + { levels, signal } = {} +) => { + const knownLevels = + levels ?? readLevels(await engine.query(levelsQuery, { signal })) + const queries = sourceKeys.flatMap((sourceKey) => knownLevels.map(({ level }) => [ - [source.id, level], - countQuery([`level:eq:${level}`, assignedTo(source)]), + [sourceKey.id, level], + countQuery([`level:eq:${level}`, assignedTo(sourceKey)]), ]) ) - const response = await queryAll(engine, queries) + const { responses, requests } = await queryAll(engine, queries, { + signal, + }) const assignedOrgUnitCounts = Object.fromEntries( - sources.map(({ id }) => [id, {}]) + sourceKeys.map(({ id }) => [id, {}]) ) queries.forEach(([[sourceId, level]], i) => { - const total = getTotal(response[`count${i}`]) + const total = getTotal(responses[i]) if (total) { assignedOrgUnitCounts[sourceId][level] = total @@ -63,6 +71,6 @@ export const fetchAssignedOrgUnitCounts = async (engine, sources, levels) => { return { levels: knownLevels, assignedOrgUnitCounts, - requests: queries.length, + requests, } } diff --git a/src/api/dataItemProfile/fetchDataItemProfileMetadata.js b/src/api/dataItemProfile/fetchDataItemProfileMetadata.js index 7fb464ede..190aaf31e 100644 --- a/src/api/dataItemProfile/fetchDataItemProfileMetadata.js +++ b/src/api/dataItemProfile/fetchDataItemProfileMetadata.js @@ -1,5 +1,6 @@ -import { DIMENSION_TYPE_REPORTING_RATE } from '../../modules/dataItemProfile/constants.js' import { parseExpressionOperands } from '../../modules/dataItemProfile/expressionOperands.js' +import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' +import { REPORTING_RATE } from '../../modules/dataSets.js' import { DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_ELEMENT_OPERAND, @@ -12,12 +13,16 @@ import { DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION, DIMENSION_TYPE_PROGRAM_INDICATOR, } from '../../modules/dataTypes.js' -import { fetchAssignedOrgUnitCounts } from './assignedOrgUnitCounts.js' +import { + fetchAssignedOrgUnitCounts, + getDataItemProfileSourceKeys, +} from './assignedOrgUnitCounts.js' import { dataItemProfileMetadataQueries, METADATA_RESOURCES, normalizeDataItemProfileMetadata, } from './metadataQueries.js' +import { levelsQuery, readLevels } from './orgUnitQueries.js' const createPending = () => Object.fromEntries( @@ -37,7 +42,7 @@ const addItem = (pending, { id, dimensionItemType }) => { case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: pending.dataElements.add(id.split('.')[0]) break - case DIMENSION_TYPE_REPORTING_RATE: + case REPORTING_RATE: pending.dataSets.add(id.split('.')[0]) break case DIMENSION_TYPE_INDICATOR: @@ -63,7 +68,7 @@ const addItem = (pending, { id, dimensionItemType }) => { const RESOURCE_BY_OPERAND_TYPE = { [DIMENSION_TYPE_DATA_ELEMENT]: 'dataElements', - [DIMENSION_TYPE_REPORTING_RATE]: 'dataSets', + [REPORTING_RATE]: 'dataSets', [DIMENSION_TYPE_INDICATOR]: 'indicators', [DIMENSION_TYPE_PROGRAM_INDICATOR]: 'programIndicators', } @@ -113,7 +118,10 @@ const mergeMetadata = (metadata, fetched) => /* One round: fetch what is pending and not fetched yet, then what it refers * to (indicators nest through N{}). Each id is fetched once, so the rounds * end when nothing new is referred to. */ -const fetchRound = async (dataEngine, { metadata, pending, requested }) => { +const fetchRound = async ( + dataEngine, + { metadata, pending, requested, signal } +) => { const toFetch = METADATA_RESOURCES.map((resource) => [ resource, [...pending[resource]].filter((id) => !requested[resource].has(id)), @@ -129,7 +137,7 @@ const fetchRound = async (dataEngine, { metadata, pending, requested }) => { return dataEngine.query( { [resource]: dataItemProfileMetadataQueries[resource] }, - { variables: { ids } } + { variables: { ids }, signal } ) }) ) @@ -141,21 +149,41 @@ const fetchRound = async (dataEngine, { metadata, pending, requested }) => { metadata: mergeMetadata(metadata, fetched), pending: getReferences(fetched), requested, + signal, }) } -// The data sets and programs behind the metadata, as sources to count -const getSources = (metadata) => [ - ...[ - ...new Set([ - ...Object.values(metadata.dataElements).flatMap(({ dataSets }) => - dataSets.map(({ id }) => id).filter(Boolean) - ), - ...Object.keys(metadata.dataSets), - ]), - ].map((id) => ({ id, field: 'dataSets' })), - ...Object.keys(metadata.programs).map((id) => ({ id, field: 'programs' })), -] +// What `known` metadata already holds counts as requested +const getRequested = (known) => + Object.fromEntries( + METADATA_RESOURCES.map((resource) => [ + resource, + new Set(Object.keys(known?.[resource] ?? {})), + ]) + ) + +const fetchAssignedCounts = async ( + dataEngine, + { items, metadata, known, levels, signal } +) => { + const knownCounts = known?.assignedOrgUnitCounts ?? {} + // Only the sources the items' profiles use, and not counted yet + const sourceKeys = getDataItemProfileSourceKeys( + items.map((item) => getDataItemProfile(item, metadata)) + ).filter(({ id }) => !knownCounts[id]) + const counted = await fetchAssignedOrgUnitCounts(dataEngine, sourceKeys, { + levels, + signal, + }) + + return { + orgUnitLevels: counted.levels, + assignedOrgUnitCounts: { + ...knownCounts, + ...counted.assignedOrgUnitCounts, + }, + } +} /** * Fetches the metadata getDataItemProfile needs for `items` @@ -163,32 +191,48 @@ const getSources = (metadata) => [ * operands, nested indicators, expression dimension items, program * indicators and programs. By default it also counts the org units each data * set and program is assigned to per level (fetchAssignedOrgUnitCounts), for - * the profile's assigned org unit levels; `{ withAssignedOrgUnitCounts: - * false }` leaves them out. + * the profile's assigned org unit levels, with the levels (`orgUnitLevels`); + * `{ withAssignedOrgUnitCounts: false }` leaves them out. `known`, metadata + * fetched before, is reused: only what it lacks is fetched. `signal` cancels + * the requests. */ export const fetchDataItemProfileMetadata = async ( dataEngine, items = [], - { withAssignedOrgUnitCounts = true } = {} + { withAssignedOrgUnitCounts = true, known, signal } = {} ) => { const pending = createPending() items.forEach((item) => addItem(pending, item)) - const metadata = await fetchRound(dataEngine, { - metadata: normalizeDataItemProfileMetadata(), - pending, - requested: createPending(), - }) - - if (!withAssignedOrgUnitCounts) { - return metadata - } - - const { levels, assignedOrgUnitCounts } = await fetchAssignedOrgUnitCounts( - dataEngine, - getSources(metadata) - ) - - return { ...metadata, orgUnitLevels: levels, assignedOrgUnitCounts } + // The levels, alongside the first round + const levelsRequest = + withAssignedOrgUnitCounts && !known?.orgUnitLevels + ? dataEngine.query(levelsQuery, { signal }).then(readLevels) + : Promise.resolve(known?.orgUnitLevels) + const [metadata, levels] = await Promise.all([ + fetchRound(dataEngine, { + metadata: mergeMetadata( + normalizeDataItemProfileMetadata(), + known ?? {} + ), + pending, + requested: getRequested(known), + signal, + }), + levelsRequest, + ]) + + return withAssignedOrgUnitCounts + ? { + ...metadata, + ...(await fetchAssignedCounts(dataEngine, { + items, + metadata, + known, + levels, + signal, + })), + } + : metadata } diff --git a/src/api/dataItemProfile/fetchOrgUnitCoverage.js b/src/api/dataItemProfile/fetchOrgUnitCoverage.js index 2a811416b..790789bc3 100644 --- a/src/api/dataItemProfile/fetchOrgUnitCoverage.js +++ b/src/api/dataItemProfile/fetchOrgUnitCoverage.js @@ -1,16 +1,20 @@ import { getOrgUnitsToFetch, readOrgUnitSelection, + resolveParents, } from '../../modules/dataItemProfile/orgUnits/orgUnitSelection.js' import { fetchAssignedOrgUnitCounts } from './assignedOrgUnitCounts.js' import { fetchGroupMembersByLevel, getGroupCountQueries, } from './orgUnitGroupCounts.js' +import { createListCounter } from './orgUnitListCounts.js' import { assignedTo, + getAncestorIds, countQuery, getTotal, + inGroup, levelsQuery, queryAll, readLevels, @@ -31,20 +35,21 @@ const byId = (orgUnits = []) => ]) ) -const getAncestorIds = ({ id, path }) => - path.split('/').filter((ancestorId) => ancestorId && ancestorId !== id) - -// The org units, roots and user's org units a selection needs, with the levels -const fetchOrgUnits = async (engine, orgUnitItems) => { +// The org units, roots, user's org units and levels a selection needs, beyond those already known +const fetchOrgUnits = async (engine, { orgUnitItems, previous, signal }) => { const { orgUnitIds, needsRoots, needsUserOrgUnits } = getOrgUnitsToFetch(orgUnitItems) - const response = await engine.query({ - ...levelsQuery, - ...(orgUnitIds.length && { - orgUnits: orgUnitsQuery(`id:in:[${orgUnitIds.join(',')}]`), + const known = previous?.orgUnits ?? {} + const missingIds = orgUnitIds.filter((id) => !known[id]) + const fetchRoots = needsRoots && !previous?.rootIds?.length + const fetchUser = needsUserOrgUnits && !previous?.userOrgUnitIds + const query = { + ...(!previous?.levels?.length && levelsQuery), + ...(missingIds.length && { + orgUnits: orgUnitsQuery(`id:in:[${missingIds.join(',')}]`), }), - ...(needsRoots && { roots: orgUnitsQuery('level:eq:1') }), - ...(needsUserOrgUnits && { + ...(fetchRoots && { roots: orgUnitsQuery('level:eq:1') }), + ...(fetchUser && { me: { resource: 'me', params: { @@ -52,32 +57,41 @@ const fetchOrgUnits = async (engine, orgUnitItems) => { }, }, }), - }) + } + const response = Object.keys(query).length + ? await engine.query(query, { signal }) + : {} // Analytics reads the user's data view org units when there are some const userOrgUnits = response.me?.dataViewOrganisationUnits?.length ? response.me.dataViewOrganisationUnits : response.me?.organisationUnits + const getRootIds = () => + fetchRoots + ? (response.roots?.organisationUnits ?? []).map(({ id }) => id) + : previous?.rootIds ?? [] + const getUserOrgUnitIds = () => + fetchUser + ? (userOrgUnits ?? []).map(({ id }) => id) + : previous?.userOrgUnitIds ?? null return { - levels: readLevels(response), + levels: response.levels ? readLevels(response) : previous.levels, orgUnits: { + ...known, ...byId(response.orgUnits?.organisationUnits), ...byId(response.roots?.organisationUnits), ...byId(userOrgUnits), }, - rootIds: needsRoots - ? (response.roots?.organisationUnits ?? []).map(({ id }) => id) - : [], - userOrgUnitIds: needsUserOrgUnits - ? (userOrgUnits ?? []).map(({ id }) => id) - : null, + rootIds: needsRoots ? getRootIds() : [], + userOrgUnitIds: needsUserOrgUnits ? getUserOrgUnitIds() : null, + requests: Object.keys(query).length, } } /* The counts of one org unit: how many org units each level under it has, * how many of them each source is assigned to, and how many of its * ancestors. Only levels a source is assigned at somewhere are counted. */ -const getOrgUnitQueries = (orgUnit, { sources, assignedOrgUnitCounts }) => { +const getOrgUnitQueries = (orgUnit, { sourceKeys, assignedOrgUnitCounts }) => { const under = `path:like:${orgUnit.id}` const ancestorIds = getAncestorIds(orgUnit) const assignedLevelsOf = ({ id }) => @@ -92,50 +106,147 @@ const getOrgUnitQueries = (orgUnit, { sources, assignedOrgUnitCounts }) => { ] return [ - ...[...new Set(sources.flatMap(levelsUnder))].map((level) => [ + ...[...new Set(sourceKeys.flatMap(levelsUnder))].map((level) => [ [orgUnit.id, 'total', level], countQuery([under, `level:eq:${level}`]), ]), - ...sources.flatMap((source) => + ...sourceKeys.flatMap((source) => levelsUnder(source).map((level) => [ [orgUnit.id, source.id, level], countQuery([under, `level:eq:${level}`, assignedTo(source)]), ]) ), - ...sources + ...sourceKeys .filter((source) => ancestorIds.length && isAssignedHigher(source)) .map(getAncestorsQuery), ] } -const readCounts = (queries, response) => { - const counts = {} +const recordCount = (counts, [countsKey, what, level], total) => { + counts[countsKey] ??= { totals: {}, sources: {} } - queries.forEach(([[countsKey, what, level]], i) => { - counts[countsKey] ??= { totals: {}, sources: {} } + const counted = counts[countsKey] - const counted = counts[countsKey] - const total = getTotal(response[`count${i}`]) + if (what === 'total') { + counted.totals[level] = total + return + } - if (what === 'total') { - counted.totals[level] = total - return - } + counted.sources[what] ??= { byLevel: {}, ancestors: 0 } - counted.sources[what] ??= { byLevel: {}, ancestors: 0 } + if (level === 'ancestors') { + counted.sources[what].ancestors += total + } else { + counted.sources[what].byLevel[level] = total + } +} - if (level === 'ancestors') { - counted.sources[what].ancestors += total - } else { - counted.sources[what].byLevel[level] = total - } +// Above this many source counts, lists of each source's org units are cheaper +const LIST_THRESHOLD = 100 + +const listQuery = (filter) => ({ + resource: 'organisationUnits', + params: { filter, fields: 'path', paging: false }, +}) + +const getPaths = (response) => + (response?.organisationUnits ?? []).map(({ path }) => path) + +/* The source counts, answered from one list per source of the org units it + * is assigned to, and one list per group of its members */ +const countFromLists = async ( + engine, + { sourceQueries, sourceKeys, groupIds, signal } +) => { + const lists = [ + ...sourceKeys.map((sourceKey) => [ + ['source', sourceKey.id], + listQuery(assignedTo(sourceKey)), + ]), + ...groupIds.map((groupId) => [ + ['group', groupId], + listQuery(inGroup(groupId)), + ]), + ] + const { responses, requests } = await queryAll(engine, lists, { signal }) + const pathsOf = (kind) => + Object.fromEntries( + lists + .map(([[listKind, id]], i) => [listKind, id, responses[i]]) + .filter(([listKind]) => listKind === kind) + .map(([, id, response]) => [id, getPaths(response)]) + ) + const sourcePaths = pathsOf('source') + const count = createListCounter(pathsOf('group')) + const sourceFilterOf = (sourceId) => + assignedTo(sourceKeys.find(({ id }) => id === sourceId)) + + return { + totals: sourceQueries.map(([[, sourceId], query]) => + count( + sourcePaths[sourceId], + query.params.filter.filter( + (condition) => condition !== sourceFilterOf(sourceId) + ) + ) + ), + requests, + } +} + +const fetchCounts = async ( + engine, + { queries, sourceKeys, groupIds, signal } +) => { + const counts = {} + const totalQueries = queries.filter(([[, what]]) => what === 'total') + const sourceQueries = queries.filter(([[, what]]) => what !== 'total') + const useLists = sourceQueries.length > LIST_THRESHOLD + const fetched = await queryAll(engine, useLists ? totalQueries : queries, { + signal, }) + const listed = useLists + ? await countFromLists(engine, { + sourceQueries, + sourceKeys, + groupIds, + signal, + }) + : { totals: [], requests: 0 } + + ;(useLists ? totalQueries : queries).forEach(([key], i) => + recordCount(counts, key, getTotal(fetched.responses[i])) + ) - return counts + if (useLists) { + sourceQueries.forEach(([key], i) => + recordCount(counts, key, listed.totals[i]) + ) + } + + return { counts, requests: fetched.requests + listed.requests } +} + +const EMPTY_COVERAGE = { + levels: [], + orgUnits: {}, + rootIds: [], + userOrgUnitIds: null, + groups: {}, + assignedOrgUnitCounts: {}, + sourceIds: [], + counts: {}, + requests: 0, } +// The counts of the previous coverage that still hold: same sources, same org unit or group level +const getReusableCounts = (previous, sourceKeys) => + previous && sourceKeys.every(({ id }) => previous.sourceIds?.includes(id)) + ? previous.counts + : {} + /** - * Where data sets and programs (`sources`, getCountableSources) are assigned, + * Where data sets and programs (`sourceKeys`, getDataItemProfileSourceKeys) are assigned, * for an org unit selection (`orgUnits`, DV's org unit items). Gives: * - `levels`, and `orgUnits` by id (the selection's, the roots for a level * alone, the user's), with `rootIds` and `userOrgUnitIds`; @@ -145,53 +256,104 @@ const readCounts = (queries, response) => { * - `counts`, by org unit id (and by getGroupCountsKey for groups): per level * a source is assigned at, the number of org units and of those each * source is assigned to, plus the ancestors each one is assigned to; - * - `requests`: how many counts were sent. - * All metadata; each round of requests goes out together. + * - `sourceIds`, and `requests`: how many requests were sent. + * All metadata. Identical counts are sent once, in batches. Above + * LIST_THRESHOLD source counts, one list per source of its org units (and + * one per group of its members) answers them instead. `previous`, the + * coverage of an earlier selection, gives what it already knows: its org + * units, levels, groups, assigned counts, and its counts when the sources + * are the same. `signal` cancels the requests. * getDataItemProfileOrgUnitCompatibility reads the result. */ export const fetchOrgUnitCoverage = async ( engine, - { sources = [], orgUnits: orgUnitItems = [], assignedOrgUnitCounts = {} } + { + sourceKeys = [], + orgUnits: orgUnitItems = [], + assignedOrgUnitCounts = {}, + previous, + signal, + } ) => { - const { levels, orgUnits, rootIds, userOrgUnitIds } = await fetchOrgUnits( - engine, - orgUnitItems - ) - const missing = sources.filter(({ id }) => !assignedOrgUnitCounts[id]) + if (!orgUnitItems.length) { + return { + ...EMPTY_COVERAGE, + levels: previous?.levels ?? [], + assignedOrgUnitCounts, + sourceIds: sourceKeys.map(({ id }) => id), + } + } + + const fetched = await fetchOrgUnits(engine, { + orgUnitItems, + previous, + signal, + }) + const { levels, orgUnits, rootIds, userOrgUnitIds } = fetched + const knownCounts = { + ...previous?.assignedOrgUnitCounts, + ...assignedOrgUnitCounts, + } + const knownGroups = previous?.groups ?? {} + const { groupIds } = getOrgUnitsToFetch(orgUnitItems) const [assigned, grouped] = await Promise.all([ - fetchAssignedOrgUnitCounts(engine, missing, levels), - fetchGroupMembersByLevel( + fetchAssignedOrgUnitCounts( engine, - getOrgUnitsToFetch(orgUnitItems).groupIds, - levels + sourceKeys.filter(({ id }) => !knownCounts[id]), + { levels, signal } ), + fetchGroupMembersByLevel(engine, { + groupIds: groupIds.filter((groupId) => !knownGroups[groupId]), + levels, + signal, + }), ]) const allAssignedOrgUnitCounts = { - ...assignedOrgUnitCounts, + ...knownCounts, ...assigned.assignedOrgUnitCounts, } - const context = { sources, assignedOrgUnitCounts: allAssignedOrgUnitCounts } + const groups = { ...knownGroups, ...grouped.groups } + const context = { + sourceKeys, + assignedOrgUnitCounts: allAssignedOrgUnitCounts, + } + const { parentItems } = readOrgUnitSelection(orgUnitItems) + const reusable = getReusableCounts(previous, sourceKeys) const queries = [ ...Object.values(orgUnits).flatMap((orgUnit) => getOrgUnitQueries(orgUnit, context) ), ...getGroupCountQueries({ ...context, - groups: grouped.groups, - parentOrgUnitIds: - readOrgUnitSelection(orgUnitItems).parentOrgUnitIds, + groups: Object.fromEntries( + groupIds.map((groupId) => [groupId, groups[groupId]]) + ), + parents: parentItems.length + ? resolveParents(parentItems, fetched) ?? [] + : null, orgUnits, }), - ] + ].filter(([[countsKey]]) => !reusable[countsKey]) + const counted = await fetchCounts(engine, { + queries, + sourceKeys, + groupIds, + signal, + }) return { levels, orgUnits, rootIds, userOrgUnitIds, - groups: grouped.groups, + groups, assignedOrgUnitCounts: allAssignedOrgUnitCounts, - counts: readCounts(queries, await queryAll(engine, queries)), - requests: assigned.requests + grouped.requests + queries.length, + sourceIds: sourceKeys.map(({ id }) => id), + counts: { ...reusable, ...counted.counts }, + requests: + fetched.requests + + assigned.requests + + grouped.requests + + counted.requests, } } diff --git a/src/api/dataItemProfile/metadataQueries.js b/src/api/dataItemProfile/metadataQueries.js index 3e413ba79..be8785c59 100644 --- a/src/api/dataItemProfile/metadataQueries.js +++ b/src/api/dataItemProfile/metadataQueries.js @@ -10,12 +10,12 @@ export const dataItemProfileMetadataQueries = { dataElements: { resource: 'dataElements', ...byIds( - 'id,aggregationType,aggregationLevels,valueType,domainType,dataSetElements[dataSet[id,periodType]]' + 'id,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]' ), }, indicators: { resource: 'indicators', - ...byIds('id,numerator,denominator,annualized'), + ...byIds('id,numerator,denominator'), }, dataSets: { resource: 'dataSets', @@ -23,7 +23,7 @@ export const dataItemProfileMetadataQueries = { }, expressionDimensionItems: { resource: 'expressionDimensionItems', - ...byIds('id,expression'), + ...byIds('id,expression,missingValueStrategy'), }, programIndicators: { resource: 'programIndicators', @@ -31,7 +31,7 @@ export const dataItemProfileMetadataQueries = { }, programs: { resource: 'programs', - ...byIds('id,programType'), + ...byIds('id'), }, } @@ -44,29 +44,18 @@ const getPeriodTypeName = (periodType) => const getList = (response, resource) => Array.isArray(response) ? response : response?.[resource] ?? [] -// By id, or by period type when a version sends no id -const getDataSetKey = ({ id, periodType }) => id ?? periodType - -const uniqueDataSets = (dataSets) => - dataSets.filter( - (dataSet, i) => - dataSets.findIndex( - (other) => getDataSetKey(other) === getDataSetKey(dataSet) - ) === i - ) +const uniqueDataSets = (dataSets) => [ + ...new Map(dataSets.map((dataSet) => [dataSet.id, dataSet])).values(), +] const normalizers = { dataElements: ({ aggregationType, aggregationLevels, - valueType, - domainType, dataSetElements, }) => ({ aggregationType, ...(aggregationLevels?.length && { aggregationLevels }), - valueType, - domainType, dataSets: uniqueDataSets( (dataSetElements ?? []) .map(({ dataSet }) => dataSet) @@ -77,15 +66,14 @@ const normalizers = { })) ), }), - indicators: ({ numerator, denominator, annualized }) => ({ - numerator, - denominator, - annualized, - }), + indicators: ({ numerator, denominator }) => ({ numerator, denominator }), dataSets: ({ periodType }) => ({ periodType: getPeriodTypeName(periodType), }), - expressionDimensionItems: ({ expression }) => ({ expression }), + expressionDimensionItems: ({ expression, missingValueStrategy }) => ({ + expression, + ...(missingValueStrategy && { missingValueStrategy }), + }), programIndicators: ({ program, orgUnitField, @@ -97,7 +85,7 @@ const normalizers = { hasPeriodBoundaries: analyticsPeriodBoundaries.length > 0, }), }), - programs: ({ programType }) => ({ programType }), + programs: () => ({}), } /** diff --git a/src/api/dataItemProfile/orgUnitGroupCounts.js b/src/api/dataItemProfile/orgUnitGroupCounts.js index 195a6b7ff..fc3dfe43a 100644 --- a/src/api/dataItemProfile/orgUnitGroupCounts.js +++ b/src/api/dataItemProfile/orgUnitGroupCounts.js @@ -1,6 +1,7 @@ import { getGroupCountsKey } from '../../modules/dataItemProfile/orgUnits/orgUnitSelection.js' import { assignedTo, + getAncestorIds, countQuery, getTotal, inGroup, @@ -19,57 +20,79 @@ const aboveMembers = (groupId, height) => * Each group's members per level: `{ groups: { [groupId]: { [level]: count } }, * requests }`. */ -export const fetchGroupMembersByLevel = async (engine, groupIds, levels) => { +export const fetchGroupMembersByLevel = async ( + engine, + { groupIds, levels, signal } +) => { const queries = groupIds.flatMap((groupId) => levels.map(({ level }) => [ [groupId, level], countQuery([inGroup(groupId), `level:eq:${level}`]), ]) ) - const response = await queryAll(engine, queries) + const { responses, requests } = await queryAll(engine, queries, { + signal, + }) const groups = Object.fromEntries(groupIds.map((groupId) => [groupId, {}])) queries.forEach(([[groupId, level]], i) => { - const total = getTotal(response[`count${i}`]) + const total = getTotal(responses[i]) if (total) { groups[groupId][level] = total } }) - return { groups, requests: queries.length } + return { groups, requests } } -/* Each place to count a group in: the level its members are at, under each - * parent org unit at or above it (or none) */ -const getGroupPlaces = ({ groups, parentOrgUnitIds, orgUnits }) => { - const parents = parentOrgUnitIds.length ? parentOrgUnitIds : [null] +const NO_PARENT = { orgUnitId: null, minLevel: 1 } - return Object.entries(groups).flatMap(([groupId, membersByLevel]) => +/* Each level a group's members are at, under each parent that holds that + * level (resolveParents), or anywhere without parents */ +const getGroupLevelsUnderParents = ({ groups, parents }) => + Object.entries(groups).flatMap(([groupId, membersByLevel]) => Object.keys(membersByLevel) .map(Number) .flatMap((memberLevel) => - parents - .filter( - (parentId) => - !parentId || - orgUnits[parentId]?.level <= memberLevel - ) - .map((parentId) => ({ groupId, memberLevel, parentId })) + (parents ?? [NO_PARENT]) + .filter(({ minLevel }) => minLevel <= memberLevel) + .map(({ orgUnitId }) => ({ + groupId, + memberLevel, + parentId: orgUnitId, + })) ) ) -} -/* The counts of one place, as for an org unit: the org units at each level - * under the members (the members' level included, to know whether any lie - * under the parent), those each source is assigned to, and the ones above - * the members each source is assigned to (above any member: the filter can't - * keep them under the parent, and they only tell ASSIGNED_AT_HIGHER_LEVEL - * from NOT_ASSIGNED) */ -const getPlaceQueries = ( +/* The org units above the members at `level`, kept under the parent: below + * the parent's level, the parent's own ancestors */ +const getAboveMembersFilters = ( { groupId, memberLevel, parentId }, - { sources, assignedOrgUnitCounts } + level, + orgUnits +) => { + const parent = parentId && orgUnits[parentId] + + if (parent && level < parent.level) { + return [`id:in:[${getAncestorIds(parent).join(',')}]`] + } + + return [ + ...(parent ? [`path:like:${parentId}`] : []), + aboveMembers(groupId, memberLevel - level), + ] +} + +/* The counts of one group level under one parent, as for an org unit: the + * org units at each level under the members (the members' level included, to + * know whether any lie under the parent), those each source is assigned to, + * and the ones above the members each source is assigned to */ +const getGroupLevelQueries = ( + groupLevel, + { sourceKeys, assignedOrgUnitCounts, orgUnits } ) => { + const { groupId, memberLevel, parentId } = groupLevel const key = getGroupCountsKey(groupId, memberLevel, parentId) const underParent = parentId ? [`path:like:${parentId}`] : [] const levelsOf = ({ id }) => @@ -81,20 +104,20 @@ const getPlaceQueries = ( ] const totalLevels = new Set([ memberLevel, - ...sources.flatMap(levelsOf).filter((level) => level >= memberLevel), + ...sourceKeys.flatMap(levelsOf).filter((level) => level >= memberLevel), ]) - const getSourceQuery = (source, level) => + const getSourceQuery = (sourceKey, level) => level >= memberLevel ? [ - [key, source.id, level], - countQuery([...atLevel(level), assignedTo(source)]), + [key, sourceKey.id, level], + countQuery([...atLevel(level), assignedTo(sourceKey)]), ] : [ - [key, source.id, 'ancestors'], + [key, sourceKey.id, 'ancestors'], countQuery([ - aboveMembers(groupId, memberLevel - level), + ...getAboveMembersFilters(groupLevel, level, orgUnits), `level:eq:${level}`, - assignedTo(source), + assignedTo(sourceKey), ]), ] @@ -103,23 +126,28 @@ const getPlaceQueries = ( [key, 'total', level], countQuery(atLevel(level)), ]), - ...sources.flatMap((source) => - levelsOf(source).map((level) => getSourceQuery(source, level)) + ...sourceKeys.flatMap((sourceKey) => + levelsOf(sourceKey).map((level) => getSourceQuery(sourceKey, level)) ), ] } /** * The count queries for groups (`groups`, from fetchGroupMembersByLevel), - * kept by getGroupCountsKey, in the shape fetchOrgUnitCoverage reads. + * under the selection's parents (`parents`, from resolveParents; null for + * none), kept by getGroupCountsKey, in the shape fetchOrgUnitCoverage reads. */ export const getGroupCountQueries = ({ groups, - parentOrgUnitIds, + parents, orgUnits, - sources, + sourceKeys, assignedOrgUnitCounts, }) => - getGroupPlaces({ groups, parentOrgUnitIds, orgUnits }).flatMap((place) => - getPlaceQueries(place, { sources, assignedOrgUnitCounts }) + getGroupLevelsUnderParents({ groups, parents }).flatMap((groupLevel) => + getGroupLevelQueries(groupLevel, { + sourceKeys, + assignedOrgUnitCounts, + orgUnits, + }) ) diff --git a/src/api/dataItemProfile/orgUnitListCounts.js b/src/api/dataItemProfile/orgUnitListCounts.js new file mode 100644 index 000000000..98a25cc5d --- /dev/null +++ b/src/api/dataItemProfile/orgUnitListCounts.js @@ -0,0 +1,92 @@ +/* Counts answered from lists instead of the server: for a large selection, + * one list of the org units each source is assigned to (with their paths) + * and one of each group's members replace hundreds of pageSize=1 counts. The + * filters of a count are evaluated on the list as the server would. */ + +const getPathIds = (path) => path.split('/').filter(Boolean) + +const GROUP_FILTER = /^((?:parent\.|children\.)*)organisationUnitGroups\.id$/ + +// For a group: its members' ids, and the ids of the org units `height` levels above a member +const indexGroup = (memberPaths) => { + const members = memberPaths.map(getPathIds) + const aboveMembers = (height) => + new Set( + members + .filter((ids) => ids.length > height) + .map((ids) => ids[ids.length - 1 - height]) + ) + const aboveByHeight = new Map() + + return { + memberIds: new Set(members.map((ids) => ids[ids.length - 1])), + isAboveMembers: (id, height) => { + if (!aboveByHeight.has(height)) { + aboveByHeight.set(height, aboveMembers(height)) + } + + return aboveByHeight.get(height).has(id) + }, + } +} + +// Whether the org unit of `ids` (its path) passes a group filter behind parent. and children. steps +const passesGroupFilter = (ids, steps, group) => { + const parents = (steps.match(/parent\./g) ?? []).length + const children = (steps.match(/children\./g) ?? []).length + + if (children) { + return group.isAboveMembers(ids[ids.length - 1], children) + } + + const ancestor = ids[ids.length - 1 - parents] + + return Boolean(ancestor) && group.memberIds.has(ancestor) +} + +const passesFilter = (ids, condition, groups) => { + const [field, operator, ...rest] = condition.split(':') + const value = rest.join(':') + const groupSteps = field.match(GROUP_FILTER) + + if (groupSteps) { + return passesGroupFilter(ids, groupSteps[1], groups[value]) + } + + switch (`${field}:${operator}`) { + case 'level:eq': + return ids.length === Number(value) + case 'path:like': + return ids.includes(value) + case 'id:in': + return value + .slice(1, -1) + .split(',') + .includes(ids[ids.length - 1]) + default: + return false + } +} + +/** + * The count of `filter` (a count query's filters, without the source one) + * among the org units of a source (`paths`), with the members of the groups + * the filters name (`groupMemberPaths`, by group id). + */ +export const createListCounter = (groupMemberPaths) => { + const groups = Object.fromEntries( + Object.entries(groupMemberPaths).map(([groupId, paths]) => [ + groupId, + indexGroup(paths), + ]) + ) + + return (paths, filter) => + paths + .map(getPathIds) + .filter((ids) => + filter.every((condition) => + passesFilter(ids, condition, groups) + ) + ).length +} diff --git a/src/api/dataItemProfile/orgUnitQueries.js b/src/api/dataItemProfile/orgUnitQueries.js index 82af6f40d..816abf927 100644 --- a/src/api/dataItemProfile/orgUnitQueries.js +++ b/src/api/dataItemProfile/orgUnitQueries.js @@ -1,5 +1,7 @@ +import { orgUnitLevelsQuery } from '../organisationUnits.js' + /* Requests on organisationUnits, all metadata. Counts use pageSize=1: the - * total is in the pager, so large hierarchies cost the same. */ + * total is in the pager, so a large hierarchy costs no more per count. */ // A count with no list export const countQuery = (filter) => ({ @@ -9,31 +11,68 @@ export const countQuery = (filter) => ({ export const getTotal = (response) => response?.pager?.total ?? 0 +export const getAncestorIds = ({ id, path }) => + path.split('/').filter((ancestorId) => ancestorId && ancestorId !== id) + // The filter on org units a data set or program ({ id, field }) is assigned to export const assignedTo = ({ id, field }) => `${field}.id:eq:${id}` export const inGroup = (groupId) => `organisationUnitGroups.id:eq:${groupId}` +// Requests sent at once: a few hundred in one go make the server queue them +const BATCH_SIZE = 100 + +const getQueryKey = ({ resource, params }) => JSON.stringify([resource, params]) + +const queryBatch = async (engine, batch, signal) => { + const response = await engine.query( + Object.fromEntries(batch.map((query, i) => [`query${i}`, query])), + { signal } + ) + + return batch.map((_, i) => response[`query${i}`]) +} + /** - * Sends `queries`, `[key, query]` pairs, in one request; the response for - * the i-th is `count`. + * Sends the queries of `[key, query]` pairs and gives `{ responses, requests }`: + * the responses in the same order, and how many requests were sent. Each + * distinct query is sent once (siblings share their ancestors' counts), in + * batches of BATCH_SIZE one after the other; the data engine sends one + * request per query. */ -export const queryAll = (engine, queries) => - queries.length - ? engine.query( - Object.fromEntries( - queries.map(([, query], i) => [`count${i}`, query]) - ) - ) - : {} - -export const levelsQuery = { - levels: { - resource: 'organisationUnitLevels', - params: { fields: 'id,level,displayName', paging: false }, - }, +export const queryAll = async (engine, queries, { signal } = {}) => { + const indexByKey = new Map() + const distinct = [] + const positions = queries.map(([, query]) => { + const key = getQueryKey(query) + + if (!indexByKey.has(key)) { + indexByKey.set(key, distinct.length) + distinct.push(query) + } + + return indexByKey.get(key) + }) + const batches = Array.from( + { length: Math.ceil(distinct.length / BATCH_SIZE) }, + (_, i) => distinct.slice(i * BATCH_SIZE, (i + 1) * BATCH_SIZE) + ) + const responses = await batches.reduce( + async (done, batch) => [ + ...(await done), + ...(await queryBatch(engine, batch, signal)), + ], + Promise.resolve([]) + ) + + return { + responses: positions.map((index) => responses[index]), + requests: distinct.length, + } } +export const levelsQuery = { levels: orgUnitLevelsQuery } + export const readLevels = (response) => (response?.levels?.organisationUnitLevels ?? []) .map(({ id, level, displayName }) => ({ id, level, name: displayName })) diff --git a/src/api/organisationUnits.js b/src/api/organisationUnits.js index 47d074b69..ce41e74a8 100644 --- a/src/api/organisationUnits.js +++ b/src/api/organisationUnits.js @@ -1,6 +1,6 @@ import { onError } from './index.js' -const orgUnitLevelsQuery = { +export const orgUnitLevelsQuery = { resource: 'organisationUnitLevels', params: ({ displayNameProp = 'displayName' } = {}) => ({ fields: `id,level,${displayNameProp}~rename(displayName),name`, diff --git a/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js b/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js index 784d35447..362e67101 100644 --- a/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js +++ b/src/components/DataItemProfile/__tests__/useDataItemProfiles.spec.js @@ -19,16 +19,27 @@ const OBJECTS = { dataElements: { monthly: { aggregationType: 'SUM', - dataSetElements: [{ dataSet: { periodType: 'Monthly' } }], + dataSetElements: [ + { dataSet: { id: 'formMonthly', periodType: 'Monthly' } }, + ], }, weekly: { aggregationType: 'SUM', - dataSetElements: [{ dataSet: { periodType: 'Weekly' } }], + dataSetElements: [ + { dataSet: { id: 'formWeeklyA', periodType: 'Weekly' } }, + ], }, population: { aggregationType: 'AVERAGE', // An object, as some versions send it - dataSetElements: [{ dataSet: { periodType: { name: 'Yearly' } } }], + dataSetElements: [ + { + dataSet: { + id: 'formYearlyA', + periodType: { name: 'Yearly' }, + }, + }, + ], }, assigned: { aggregationType: 'SUM', @@ -71,7 +82,7 @@ const createData = (overrides = {}) => ({ organisationUnitLevels: { organisationUnitLevels: [{ id: 'levelOne111', level: 1 }], }, - // Counts with pageSize=1 (3 units, 2 of them with filters on a data set) + // Counts with pageSize=1 (3 org units, 2 of them with filters on a data set) organisationUnits: (type, { params }) => params.pageSize === 1 ? { pager: { total: params.filter.length === 3 ? 2 : 3 } } @@ -260,8 +271,14 @@ describe('useDataItemProfiles', () => { }) it('is unknown for relative weeks on a version without the setting', async () => { - const data = createData() - delete data['systemSettings/analyticsWeeklyStart'] + const data = createData({ + 'systemSettings/analyticsWeeklyStart': () => + Promise.reject( + Object.assign(new Error('Setting does not exist'), { + details: { httpStatusCode: 404 }, + }) + ), + }) const { result } = renderProfiles([WEEKLY], data) await waitFor(() => expect(result.current.profiles).toBeDefined()) @@ -308,7 +325,7 @@ describe('useDataItemProfiles', () => { expect(result.current.profiles).toBeUndefined() }) - it('sends nothing without items', () => { + it('sends nothing without items, but the settings', async () => { const data = createData() const { result } = renderProfiles([], data) @@ -316,6 +333,13 @@ describe('useDataItemProfiles', () => { loading: false, profiles: undefined, }) + + await waitFor(() => + expect(result.current.relativePeriodTypes.weeklyPeriodType).toBe( + 'Weekly' + ) + ) + expect(data.dataElements).not.toHaveBeenCalled() }) @@ -342,6 +366,106 @@ describe('useDataItemProfiles', () => { expect(result.current.profiles.monthly).toBeUndefined() }) + it('keeps the loaded profiles while new items load, and fetches only those', async () => { + const data = createData() + const { result, rerender } = renderProfiles([MONTHLY], data) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + const monthlyProfile = result.current.profiles.monthly + + rerender([MONTHLY, WEEKLY]) + + expect(result.current.loading).toBe(true) + expect(result.current.profiles).toEqual({ monthly: monthlyProfile }) + + await waitFor(() => + expect(result.current.profiles?.weekly).toMatchObject({ + unknown: false, + }) + ) + + const filters = data.dataElements.mock.calls.map( + ([, { params }]) => params.filter + ) + + expect(filters[1]).toContain('weekly') + expect(filters[1]).not.toContain('monthly') + }) + + it('fetches the settings once', async () => { + const settings = jest.fn(() => ({ analyticsWeeklyStart: 'WEEKLY' })) + const { result, rerender } = renderProfiles( + [MONTHLY], + createData({ 'systemSettings/analyticsWeeklyStart': settings }) + ) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + rerender([WEEKLY]) + await waitFor(() => + expect(result.current.profiles?.weekly).toBeDefined() + ) + + expect(settings).toHaveBeenCalledTimes(1) + }) + + it('gives the error of a failed setting request', async () => { + const { result } = renderProfiles( + [MONTHLY], + createData({ + 'systemSettings/analyticsWeeklyStart': () => + Promise.reject(new Error('Unauthorized')), + }) + ) + + await waitFor(() => expect(result.current.error).toBeDefined()) + + expect(result.current.error.message).toBe('Unauthorized') + }) + + it('gives the same result for the same selection', async () => { + const { result } = renderProfiles([MONTHLY]) + + await waitFor(() => expect(result.current.profiles).toBeDefined()) + + const check = () => + result.current.getDataItemCompatibility('monthly', { + periods: ['202501'], + }) + + expect(check()).toBe(check()) + }) + + it('gives no coverage of earlier org units while new ones load', async () => { + const { result, rerender } = renderHook( + ({ orgUnits }) => + useDataItemProfiles( + [{ id: 'assigned', dimensionItemType: 'DATA_ELEMENT' }], + { orgUnits } + ), + { + initialProps: { orgUnits: ['nationUnit1'] }, + wrapper: createWrapper(createData()), + } + ) + + await waitFor(() => + expect(result.current.orgUnitCoverage).toBeDefined() + ) + + rerender({ orgUnits: ['LEVEL-1'] }) + + expect(result.current.orgUnitCoverage).toBeUndefined() + + await waitFor(() => + expect(result.current.orgUnitCoverage).toBeDefined() + ) + + expect( + result.current.orgUnitCoverage.orgUnits.nationUnit1 + ).toBeDefined() + }) + it('ignores a failure that came after the items changed', async () => { let rejectFirst const data = createData({ diff --git a/src/components/DataItemProfile/__tests__/utils.spec.js b/src/components/DataItemProfile/__tests__/utils.spec.js index ba68764b4..53e73dbd0 100644 --- a/src/components/DataItemProfile/__tests__/utils.spec.js +++ b/src/components/DataItemProfile/__tests__/utils.spec.js @@ -9,7 +9,9 @@ const settingsEngine = (settings) => ({ const key = setting.resource.split('/')[1] if (!(key in settings)) { - throw new Error('not found') + throw Object.assign(new Error('Setting does not exist'), { + details: { httpStatusCode: 404 }, + }) } return { setting: { [key]: settings[key] } } @@ -41,6 +43,16 @@ describe('fetchRelativePeriodTypeOptions', () => { financialYearPeriodType: undefined, }) }) + + it('fails on any other error', async () => { + const engine = { + query: jest.fn().mockRejectedValue(new Error('Unauthorized')), + } + + await expect(fetchRelativePeriodTypeOptions(engine)).rejects.toThrow( + 'Unauthorized' + ) + }) }) describe('items keys', () => { @@ -52,10 +64,22 @@ describe('items keys', () => { expect(parseItemsKey(key)).toEqual(items) }) - it('accept ids alone, and no items', () => { - expect(parseItemsKey(getItemsKey(['elementAAAA']))).toEqual([ - { id: 'elementAAAA', dimensionItemType: undefined }, - ]) + it('ignore the order of items', () => { + const elementA = { + id: 'elementAAAA', + dimensionItemType: 'DATA_ELEMENT', + } + const elementB = { + id: 'elementBBBB', + dimensionItemType: 'DATA_ELEMENT', + } + + expect(getItemsKey([elementB, elementA])).toBe( + getItemsKey([elementA, elementB]) + ) + }) + + it('accept no items', () => { expect(getItemsKey()).toBe('[]') }) }) diff --git a/src/components/DataItemProfile/useDataItemProfiles.js b/src/components/DataItemProfile/useDataItemProfiles.js index f18ddee32..b009f8b59 100644 --- a/src/components/DataItemProfile/useDataItemProfiles.js +++ b/src/components/DataItemProfile/useDataItemProfiles.js @@ -1,6 +1,6 @@ import { useConfig } from '@dhis2/app-runtime' -import { useCallback, useEffect, useMemo, useState } from 'react' -import { getCountableSources } from '../../api/dataItemProfile/assignedOrgUnitCounts.js' +import { useEffect, useMemo, useRef, useState } from 'react' +import { getDataItemProfileSourceKeys } from '../../api/dataItemProfile/assignedOrgUnitCounts.js' import { fetchDataItemProfileMetadata } from '../../api/dataItemProfile/fetchDataItemProfileMetadata.js' import { fetchOrgUnitCoverage } from '../../api/dataItemProfile/fetchOrgUnitCoverage.js' import { getDataItemProfile } from '../../modules/dataItemProfile/getDataItemProfile.js' @@ -25,7 +25,9 @@ import { * `getDataItemCompatibility(itemId, { periods, orgUnits })` runs * getDataItemProfileCompatibility on the item's profile, with the server's * settings for relative weeks and financial years, its calendar and its - * version; it gives undefined for an item not loaded. + * version, and `relativePeriodDate` for relative periods (today by default); + * it gives undefined for an item not loaded. Its results are kept until the + * profiles or options change. * * Periods need no request, so they are only passed to * getDataItemCompatibility. Org units do: `orgUnits` (DV's org unit items) @@ -33,35 +35,70 @@ import { * (fetchOrgUnitCoverage, `orgUnitCoverage`), so getDataItemCompatibility can * judge any selection whose org units it loaded, such as a level under one of * them. + * + * Changes fetch only what is missing: metadata of new items, counts of new + * org units. While new items load, the loaded ones keep their profiles. */ export const useDataItemProfiles = ( items, - { calendar, orgUnits, withAssignedOrgUnitCounts = true } = {} + { + calendar, + orgUnits, + relativePeriodDate, + withAssignedOrgUnitCounts = true, + } = {} ) => { const engineRef = useEngineRef() const itemsKey = getItemsKey(items) const resolvedCalendar = useCalendar(calendar) const { serverVersion } = useConfig() + const [settingsState, setSettingsState] = useState({ + loading: true, + error: undefined, + options: {}, + }) const [state, setState] = useState({ loading: false, error: undefined, metadata: undefined, - options: {}, + metadataItemsKey: undefined, }) const [coverageState, setCoverageState] = useState({ loading: false, error: undefined, coverage: undefined, + coverageKey: undefined, }) + const metadataRef = useRef() + const coverageRef = useRef() const orgUnitsKey = JSON.stringify(orgUnits ?? []) + metadataRef.current = state.metadata + coverageRef.current = coverageState.coverage + + // The settings don't change with the items: fetched once + useEffect(() => { + const controller = new AbortController() + + fetchRelativePeriodTypeOptions(engineRef.current, { + signal: controller.signal, + }) + .then((options) => setSettingsState({ loading: false, options })) + .catch((error) => { + if (!controller.signal.aborted) { + setSettingsState({ loading: false, error, options: {} }) + } + }) + + return () => controller.abort() + }, [engineRef]) + useEffect(() => { - const engine = engineRef.current const requestedItems = parseItemsKey(itemsKey) - let cancelled = false + const controller = new AbortController() if (!requestedItems.length) { - setState({ loading: false, metadata: undefined, options: {} }) + setState({ loading: false, metadata: metadataRef.current }) return undefined } @@ -71,55 +108,71 @@ export const useDataItemProfiles = ( error: undefined, })) - Promise.all([ - fetchDataItemProfileMetadata(engine, requestedItems, { - withAssignedOrgUnitCounts, - }), - fetchRelativePeriodTypeOptions(engine), - ]) - .then(([metadata, options]) => { - if (!cancelled) { - setState({ loading: false, metadata, options }) + fetchDataItemProfileMetadata(engineRef.current, requestedItems, { + withAssignedOrgUnitCounts, + known: metadataRef.current, + signal: controller.signal, + }) + .then((metadata) => { + if (!controller.signal.aborted) { + setState({ + loading: false, + metadata, + metadataItemsKey: itemsKey, + }) } }) .catch((error) => { - if (!cancelled) { - setState({ loading: false, error, options: {} }) + if (!controller.signal.aborted) { + setState((previous) => ({ + ...previous, + loading: false, + error, + metadataItemsKey: undefined, + })) } }) - return () => { - cancelled = true - } + return () => controller.abort() }, [engineRef, itemsKey, withAssignedOrgUnitCounts]) - const metadataProfiles = useMemo( - () => - state.metadata && - Object.fromEntries( - parseItemsKey(itemsKey).map((item) => [ - item.id, - getDataItemProfile(item, state.metadata), - ]) - ), - [itemsKey, state.metadata] - ) + /* Profiles from the metadata of the items it was fetched for: while new + * items load, the others keep theirs */ + const metadataProfiles = useMemo(() => { + const loadedIds = new Set( + state.metadataItemsKey + ? parseItemsKey(state.metadataItemsKey).map(({ id }) => id) + : [] + ) + const loadedItems = parseItemsKey(itemsKey).filter(({ id }) => + loadedIds.has(id) + ) - const sourcesKey = JSON.stringify( + return loadedItems.length + ? Object.fromEntries( + loadedItems.map((item) => [ + item.id, + getDataItemProfile(item, state.metadata), + ]) + ) + : undefined + }, [itemsKey, state.metadata, state.metadataItemsKey]) + + const sourceKeysKey = JSON.stringify( metadataProfiles - ? getCountableSources(Object.values(metadataProfiles)) + ? getDataItemProfileSourceKeys(Object.values(metadataProfiles)) : null ) + const coverageKey = `${sourceKeysKey}|${orgUnitsKey}` const knownAssignedOrgUnitCounts = state.metadata?.assignedOrgUnitCounts useEffect(() => { - const engine = engineRef.current - const sources = JSON.parse(sourcesKey) + const sourceKeys = JSON.parse(sourceKeysKey) const requestedOrgUnits = JSON.parse(orgUnitsKey) - let cancelled = false + const controller = new AbortController() - if (!sources || !requestedOrgUnits.length) { - setCoverageState({ loading: false, coverage: undefined }) + if (!sourceKeys || !requestedOrgUnits.length) { + setCoverageState({ loading: false, coverage: coverageRef.current }) return undefined } @@ -129,73 +182,114 @@ export const useDataItemProfiles = ( error: undefined, })) - fetchOrgUnitCoverage(engine, { - sources, + fetchOrgUnitCoverage(engineRef.current, { + sourceKeys, orgUnits: requestedOrgUnits, assignedOrgUnitCounts: knownAssignedOrgUnitCounts, + previous: coverageRef.current, + signal: controller.signal, }) .then((coverage) => { - if (!cancelled) { - setCoverageState({ loading: false, coverage }) + if (!controller.signal.aborted) { + setCoverageState({ + loading: false, + coverage, + coverageKey: `${sourceKeysKey}|${orgUnitsKey}`, + }) } }) .catch((error) => { - if (!cancelled) { - setCoverageState({ loading: false, error }) + if (!controller.signal.aborted) { + setCoverageState((previous) => ({ + ...previous, + loading: false, + error, + coverageKey: undefined, + })) } }) - return () => { - cancelled = true + return () => controller.abort() + }, [engineRef, sourceKeysKey, orgUnitsKey, knownAssignedOrgUnitCounts]) + + // Only the coverage of these sources and org units, never an earlier one + const coverage = + coverageState.coverageKey === coverageKey + ? coverageState.coverage + : undefined + + /* None before the settings, which relative periods need. Without the + * counts in the metadata, the coverage gives the assigned org unit levels. */ + const profiles = useMemo(() => { + if (settingsState.loading || !metadataProfiles) { + return undefined } - }, [engineRef, sourcesKey, orgUnitsKey, knownAssignedOrgUnitCounts]) - - // Without the counts in the metadata, the coverage gives the assigned org unit levels - const profiles = useMemo( - () => - metadataProfiles && - Object.fromEntries( - Object.entries(metadataProfiles).map(([id, profile]) => [ - id, - profile.assignedOrgUnitLevels || !coverageState.coverage - ? profile - : addAssignedOrgUnitLevels( - profile, - coverageState.coverage.assignedOrgUnitCounts - ), - ]) - ), - [metadataProfiles, coverageState.coverage] - ) + + return Object.fromEntries( + Object.entries(metadataProfiles).map(([id, profile]) => [ + id, + profile.assignedOrgUnitLevels || !coverage + ? profile + : addAssignedOrgUnitLevels( + profile, + coverage.assignedOrgUnitCounts + ), + ]) + ) + }, [settingsState.loading, metadataProfiles, coverage]) const options = useMemo( () => ({ - ...state.options, + ...settingsState.options, calendar: resolvedCalendar, + relativePeriodDate, serverVersion, - orgUnitCoverage: coverageState.coverage, + orgUnitCoverage: coverage, }), - [state.options, resolvedCalendar, serverVersion, coverageState.coverage] + [ + settingsState.options, + resolvedCalendar, + relativePeriodDate, + serverVersion, + coverage, + ] ) - const getDataItemCompatibility = useCallback( - (itemId, selection) => - profiles?.[itemId] - ? getDataItemProfileCompatibility( - profiles[itemId], - selection, - options - ) - : undefined, - [profiles, options] - ) + // A list of items asks for the same results on every render + const getDataItemCompatibility = useMemo(() => { + const results = new Map() + + return (itemId, selection) => { + if (!profiles?.[itemId]) { + return undefined + } + + const key = JSON.stringify([itemId, selection]) + + if (!results.has(key)) { + results.set( + key, + getDataItemProfileCompatibility( + profiles[itemId], + selection, + options + ) + ) + } + + return results.get(key) + } + }, [profiles, options]) return { - loading: state.loading || coverageState.loading, - error: state.error ?? coverageState.error, + loading: + state.loading || + coverageState.loading || + (settingsState.loading && itemsKey !== '[]'), profiles, - orgUnitCoverage: coverageState.coverage, - relativePeriodTypes: state.options, + error: settingsState.error ?? state.error ?? coverageState.error, + orgUnitCoverage: coverage, + relativePeriodTypes: settingsState.options, getDataItemCompatibility, } } diff --git a/src/components/DataItemProfile/utils.js b/src/components/DataItemProfile/utils.js index 7dc6343e5..5a0adf7fd 100644 --- a/src/components/DataItemProfile/utils.js +++ b/src/components/DataItemProfile/utils.js @@ -4,16 +4,28 @@ import { getRelativePeriodTypeOptions } from '../../modules/dataItemProfile/peri const SETTING_KEYS = ['analyticsWeeklyStart', 'analyticsFinancialYearStart'] +// The server answers 404 (E1005) for a setting its version doesn't have +const isMissingSetting = (error) => error?.details?.httpStatusCode === 404 + // A setting a version doesn't have is left out, never guessed -const fetchSetting = (engine, key) => +const fetchSetting = (engine, key, signal) => engine - .query({ setting: { resource: `systemSettings/${key}` } }) + .query({ setting: { resource: `systemSettings/${key}` } }, { signal }) .then(({ setting }) => setting?.[key]) - .catch(() => undefined) + .catch((error) => { + if (isMissingSetting(error)) { + return undefined + } + + throw error + }) -export const fetchRelativePeriodTypeOptions = async (engine) => { +export const fetchRelativePeriodTypeOptions = async ( + engine, + { signal } = {} +) => { const values = await Promise.all( - SETTING_KEYS.map((key) => fetchSetting(engine, key)) + SETTING_KEYS.map((key) => fetchSetting(engine, key, signal)) ) return getRelativePeriodTypeOptions( @@ -27,14 +39,13 @@ export const useCalendar = (calendar) => { return calendar ?? systemInfo?.calendar ?? 'gregory' } -// Items are compared by value, so a new array with the same items sends no request +/* Items ({ id, dimensionItemType }) are compared by value, in any order, so + * a new array with the same items sends no request */ export const getItemsKey = (items = []) => JSON.stringify( - items.map((item) => - typeof item === 'string' - ? [item] - : [item.id, item.dimensionItemType] - ) + items + .map(({ id, dimensionItemType }) => [id, dimensionItemType]) + .sort(([a], [b]) => a.localeCompare(b)) ) export const parseItemsKey = (itemsKey) => diff --git a/src/components/PeriodDimension/utils/enabledPeriodTypes.js b/src/components/PeriodDimension/utils/enabledPeriodTypes.js index 6ca3915f7..383be1d04 100644 --- a/src/components/PeriodDimension/utils/enabledPeriodTypes.js +++ b/src/components/PeriodDimension/utils/enabledPeriodTypes.js @@ -25,7 +25,7 @@ export const SERVER_PT_TO_MULTI_CALENDAR_PT = { FinancialNov: 'FYNOV', } -// VERSION-TOGGLE: analyticsWeeklyStart and analyticsFinancialYearStart are removed in v44 +// VERSION-TOGGLE: remove when 44 is the lowest supported version (v44 removes the analyticsWeeklyStart and analyticsFinancialYearStart settings) // The period type of relative weeks, by the analyticsWeeklyStart setting export const WEEKLY_START_TO_PERIOD_TYPE = { WEEKLY: 'Weekly', diff --git a/src/index.js b/src/index.js index 8cf2fa359..455108705 100644 --- a/src/index.js +++ b/src/index.js @@ -340,14 +340,6 @@ export { addAssignedOrgUnitLevels } from './modules/dataItemProfile/profile/assi export { getDataItemProfileCompatibility } from './modules/dataItemProfile/getDataItemProfileCompatibility.js' export { getDataItemProfilePeriodCompatibility } from './modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js' export { getDataItemProfileOrgUnitCompatibility } from './modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js' -export { - canAggregateInto, - getCandidatePeriodTypes, -} from './modules/dataItemProfile/periods/periodTypes.js' -export { - comparePeriodRanges, - getCoveringPeriodRange, -} from './modules/dataItemProfile/periods/periodRanges.js' export { COMPATIBILITY_FULL, COMPATIBILITY_PARTIAL, @@ -364,6 +356,7 @@ export { REASON_NOT_ASSIGNED, REASON_ASSIGNED_AT_HIGHER_LEVEL, REASON_STOPPED_BY_AGGREGATION_LEVEL, + REASON_NO_ORG_UNITS_AT_LEVEL, REASON_EMPTY_GROUP, REASON_PARTLY_ASSIGNED, REASON_ANY_ORG_UNIT, @@ -372,16 +365,21 @@ export { REASON_SETTING_MISSING, REASON_UNSUPPORTED_VERSION, REASON_UNKNOWN_ORG_UNIT, - PERIOD_RANGE_SAME, - PERIOD_RANGE_WITHIN, - PERIOD_RANGE_CONTAINS, - PERIOD_RANGE_OVERLAPS, - PERIOD_RANGE_DISJOINT, + PROFILE_REASON_MISSING_METADATA, + PROFILE_REASON_MISSING_PROGRAM, + PROFILE_REASON_UNKNOWN_OPERAND, + PROFILE_REASON_UNKNOWN_PERIOD_TYPE, + PROFILE_REASON_UNSUPPORTED_ITEM_TYPE, + PROFILE_REASON_NO_DATA_SET, + PROFILE_REASON_NOT_AGGREGATABLE, + SKIP_IF_ANY_VALUE_MISSING, + SKIP_IF_ALL_VALUES_MISSING, + NEVER_SKIP, } from './modules/dataItemProfile/constants.js' export { fetchDataItemProfileMetadata } from './api/dataItemProfile/fetchDataItemProfileMetadata.js' export { fetchAssignedOrgUnitCounts, - getCountableSources, + getDataItemProfileSourceKeys, } from './api/dataItemProfile/assignedOrgUnitCounts.js' export { fetchOrgUnitCoverage } from './api/dataItemProfile/fetchOrgUnitCoverage.js' diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js index df3676355..db0e687d0 100644 --- a/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfile.spec.js @@ -146,6 +146,9 @@ describe('getDataItemProfile', () => { }) it('goes up a type when two types have the same length', () => { + /* Analytics fills BiWeekly from Wednesday weeks though they don't + * nest: the test tool's fixtures show values on all 8 versions, + * for every aggregation type but NONE */ expect(profile('mondayAndWednesday', 'DATA_ELEMENT')).toMatchObject( { assignedPeriodTypes: { @@ -318,6 +321,36 @@ describe('getDataItemProfile', () => { ).toBe('Yearly') }) + it('say how their operands combine: both sides, any item of a side', () => { + const side = (...keys) => ({ + missingValueStrategy: 'SKIP_IF_ALL_VALUES_MISSING', + parts: keys.map((key) => ({ operand: key })), + }) + + expect(profile('nested', 'INDICATOR').expression).toEqual({ + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + parts: [ + { + missingValueStrategy: 'SKIP_IF_ALL_VALUES_MISSING', + parts: [ + { + missingValueStrategy: + 'SKIP_IF_ANY_VALUE_MISSING', + parts: [ + side('element:monthly:SUM'), + side('element:population:AVERAGE'), + ], + }, + ], + }, + side(), + ], + }) + expect(profile('eventsOnly', 'INDICATOR').expression.parts).toEqual( + [side('program:pr::', 'program:pr::'), side()] + ) + }) + it('read indicators that refer to each other once', () => { expect(profile('loopA', 'INDICATOR')).toMatchObject({ unknown: false, @@ -392,6 +425,24 @@ describe('getDataItemProfile', () => { }) }) + it('take their missing value strategy, by default skipping only when all are missing', () => { + const strategyOf = (missingValueStrategy) => + profile('sum', 'EXPRESSION_DIMENSION_ITEM', { + ...metadata, + expressionDimensionItems: { + sum: { + expression: '#{weekly} + #{monthly}', + missingValueStrategy, + }, + }, + }).expression.missingValueStrategy + + expect(strategyOf(undefined)).toBe('SKIP_IF_ALL_VALUES_MISSING') + expect(strategyOf('SKIP_IF_ANY_VALUE_MISSING')).toBe( + 'SKIP_IF_ANY_VALUE_MISSING' + ) + }) + it('are unknown without metadata', () => { expect(profile('gone', 'EXPRESSION_DIMENSION_ITEM').unknown).toBe( true diff --git a/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js index 88add0923..58480027c 100644 --- a/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js +++ b/src/modules/dataItemProfile/__tests__/getDataItemProfileCompatibility.spec.js @@ -1,4 +1,8 @@ import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' +import { + ORG_UNIT_COVERAGE, + orgUnitProfileOf, +} from '../../../__fixtures__/dataItemProfileOrgUnits.js' import { getDataItemProfile } from '../getDataItemProfile.js' import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' @@ -19,6 +23,7 @@ const metadata = { firstMonthly: dataElement(['Monthly'], 'FIRST'), firstDaily: dataElement(['Daily'], 'FIRST'), lastFinancialApril: dataElement(['FinancialApril'], 'LAST'), + lastYearly: dataElement(['Yearly'], 'LAST'), lastTwoYearly: dataElement(['TwoYearly'], 'LAST'), twoYearly: dataElement(['TwoYearly']), mondayWednesday: dataElement(['Weekly', 'WeeklyWednesday']), @@ -32,6 +37,30 @@ const metadata = { denominator: '#{weekly}', }, timesTwelve: { numerator: '#{monthly} * 12', denominator: '1' }, + // A missing item of a side counts as 0 + monthlyPlusYearly: { + numerator: '#{monthly} + #{yearly}', + denominator: '1', + }, + weeklyPlusWeekly: { + numerator: '#{weekly} + #{wednesday}', + denominator: '1', + }, + sumOverRatio: { + numerator: 'N{monthlyPlusYearly}', + denominator: '#{yearly}', + }, + }, + expressionDimensionItems: { + sumByDefault: { expression: '#{monthly} + #{yearly}' }, + sumNeedingAll: { + expression: '#{monthly} + #{yearly}', + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + }, + sumNeverSkipped: { + expression: '#{monthly} + #{yearly}', + missingValueStrategy: 'NEVER_SKIP', + }, }, } @@ -57,18 +86,19 @@ const outcomeOf = (...args) => { } const full = (reasons = []) => ({ status: 'full', reasons }) +const partial = (reasons) => ({ status: 'partial', reasons }) const none = (reasons) => ({ status: 'none', reasons }) const unknown = (reasons) => ({ status: 'unknown', reasons }) describe('getDataItemProfileCompatibility', () => { - it('gives results per period, per source and overall', () => { + it('gives results per period, per source and overall, which add up', () => { expect(compatibilityOf('monthly', ['2025W2', '202501'])).toEqual({ - status: 'none', + status: 'partial', reasons: ['PERIOD_TOO_SHORT'], sources: [ { sourceId: 'MonthlyForm', - status: 'none', + status: 'partial', reasons: ['PERIOD_TOO_SHORT'], }, ], @@ -139,7 +169,7 @@ describe('getDataItemProfileCompatibility', () => { }) describe('FIRST and LAST', () => { - it('LAST carries the latest data period of the years touched', () => { + it('LAST takes the latest data period of the years touched', () => { // June's value, for a day in July expect(outcomeOf('stock', ['20250715'])).toEqual( full(['EARLIER_PERIOD_VALUE']) @@ -199,22 +229,65 @@ describe('getDataItemProfileCompatibility', () => { ).toMatchObject(full(['EARLIER_PERIOD_VALUE'])) }) - it('may carry when the selection has no dates', () => { + it('judges a period type by type alone, as it has no dates', () => { expect(outcomeOf('stock', ['Weekly'])).toEqual( full(['EARLIER_PERIOD_VALUE']) ) - expect(outcomeOf('stock', ['LAST_12_MONTHS'])).toEqual(full()) - // FIRST gives January's value to every month of the year - expect(outcomeOf('firstMonthly', ['LAST_12_MONTHS'])).toEqual( - full(['EARLIER_PERIOD_VALUE']) - ) - expect( - compatibilityOf('stock', ['20250101', 'LAST_12_MONTHS']) - .periods[0] - ).toMatchObject(full(['EARLIER_PERIOD_VALUE'])) + expect(outcomeOf('stock', ['Quarterly'])).toEqual(full()) + }) + + describe('with relative periods, resolved on relativePeriodDate', () => { + const ON_15_JUNE_2025 = { relativePeriodDate: '2025-06-15' } + + it('judges each fixed period they cover', () => { + // June 2024 to May 2025: each month has its own value + expect( + outcomeOf('stock', ['LAST_12_MONTHS'], ON_15_JUNE_2025) + ).toEqual(full()) + // FIRST gives January 2024's value to every month + expect( + outcomeOf( + 'firstMonthly', + ['LAST_12_MONTHS'], + ON_15_JUNE_2025 + ) + ).toEqual(full(['EARLIER_PERIOD_VALUE'])) + }) + + it('count the years they touch for the fixed periods beside them', () => { + expect( + compatibilityOf('stock', ['20250101']).periods[0] + ).toMatchObject(none(['NO_EARLIER_PERIOD_VALUE'])) + // LAST_12_MONTHS adds 2024: December 2024 counts + expect( + compatibilityOf( + 'stock', + ['20250101', 'LAST_12_MONTHS'], + ON_15_JUNE_2025 + ).periods[0] + ).toMatchObject(full(['EARLIER_PERIOD_VALUE'])) + }) + + it('is partial when only some of their fixed periods have a value', () => { + /* The months of 2025 touch only 2025: the 2025 value ends in + * December, and 2024's year isn't in the request */ + expect( + outcomeOf( + 'lastYearly', + ['MONTHS_THIS_YEAR'], + ON_15_JUNE_2025 + ) + ).toEqual({ + status: 'partial', + reasons: [ + 'NO_EARLIER_PERIOD_VALUE', + 'EARLIER_PERIOD_VALUE', + ], + }) + }) }) - it('may carry when the data type has no dates', () => { + it('may take an earlier value when the data type has no dates', () => { expect(outcomeOf('lastTwoYearly', ['2025'])).toEqual( full(['EARLIER_PERIOD_VALUE']) ) @@ -258,6 +331,44 @@ describe('getDataItemProfileCompatibility', () => { }) }) + it('are partial when some items of a side give nothing, which count as 0', () => { + expect( + outcomeOf(indicator('monthlyPlusYearly'), ['202501']) + ).toEqual(partial(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + expect(outcomeOf(indicator('monthlyPlusYearly'), ['2025'])).toEqual( + full() + ) + }) + + it('are empty when all items of a side give nothing', () => { + expect( + outcomeOf(indicator('weeklyPlusWeekly'), ['20250115']) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + }) + + it('need both sides of a nested indicator', () => { + expect(outcomeOf(indicator('sumOverRatio'), ['202501'])).toEqual( + none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT']) + ) + }) + + it('follow the missing value strategy of an expression dimension item', () => { + const expressionItem = (id) => ({ + id, + dimensionItemType: 'EXPRESSION_DIMENSION_ITEM', + }) + + expect( + outcomeOf(expressionItem('sumByDefault'), ['202501']) + ).toEqual(partial(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + expect( + outcomeOf(expressionItem('sumNeverSkipped'), ['202501']) + ).toEqual(partial(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + expect( + outcomeOf(expressionItem('sumNeedingAll'), ['202501']) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + }) + it('say nothing more with one operand', () => { expect(outcomeOf(indicator('timesTwelve'), ['2025W2'])).toEqual( none(['PERIOD_TOO_SHORT']) @@ -298,7 +409,7 @@ describe('getDataItemProfileCompatibility', () => { reasons: ['PERIOD_TOO_SHORT'], sources: [ { sourceId: 'surveillance', status: 'full' }, - { sourceId: 'report', status: 'none' }, + { sourceId: 'report', status: 'partial' }, ], periods: [ { @@ -453,12 +564,19 @@ describe('getDataItemProfileCompatibility', () => { }) }) - it('ranks empty, then partial, then unknown, then complete', () => { + it('adds up periods: none when all are, partial when some give values', () => { + expect(outcomeOf('monthly', ['2025W2', '2025W3'])).toEqual( + none(['PERIOD_TOO_SHORT']) + ) + expect(outcomeOf('monthly', ['202501', '2025W2'])).toEqual( + partial(['PERIOD_TOO_SHORT']) + ) expect(outcomeOf('monthly', ['202501', 'NEXT_CENTURY'])).toEqual( unknown(['UNKNOWN_PERIOD']) ) + // Nothing from one, and the other can't be told expect(outcomeOf('monthly', ['NEXT_CENTURY', '2025W2'])).toEqual( - none(['PERIOD_TOO_SHORT', 'UNKNOWN_PERIOD']) + unknown(['PERIOD_TOO_SHORT', 'UNKNOWN_PERIOD']) ) }) @@ -564,3 +682,41 @@ describe('getDataItemProfileCompatibility', () => { }) }) }) + +describe('getDataItemProfileCompatibility, with org units', () => { + it('judges periods and org units apart, and adds them up overall', () => { + const result = getDataItemProfileCompatibility( + orgUnitProfileOf('facility'), + { periods: ['2025Q1'], orgUnits: ['nationUnit1', 'facilityDDD'] }, + { orgUnitCoverage: ORG_UNIT_COVERAGE } + ) + + expect(result).toMatchObject({ + status: 'partial', + reasons: ['ASSIGNED_AT_HIGHER_LEVEL', 'PARTLY_ASSIGNED'], + periods: [{ id: '2025Q1', status: 'full' }], + orgUnits: [ + { id: 'nationUnit1', status: 'full' }, + { id: 'facilityDDD', status: 'none' }, + ], + }) + }) + + it('leaves org units out when none are asked', () => { + expect( + getDataItemProfileCompatibility(orgUnitProfileOf('facility'), { + periods: ['2025Q1'], + }) + ).not.toHaveProperty('orgUnits') + }) + + it('judges org units alone', () => { + expect( + getDataItemProfileCompatibility( + orgUnitProfileOf('facility'), + { orgUnits: ['districtAAA'] }, + { orgUnitCoverage: ORG_UNIT_COVERAGE } + ) + ).toMatchObject({ status: 'full', periods: [] }) + }) +}) diff --git a/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js index f3507de4a..205e21e85 100644 --- a/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js +++ b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { createFakeOrgUnitServer } from '../../../__fixtures__/fakeOrgUnitServer.js' -import { getCountableSources } from '../../../api/dataItemProfile/assignedOrgUnitCounts.js' +import { getDataItemProfileSourceKeys } from '../../../api/dataItemProfile/assignedOrgUnitCounts.js' import { fetchOrgUnitCoverage } from '../../../api/dataItemProfile/fetchOrgUnitCoverage.js' import { normalizeDataItemProfileMetadata } from '../../../api/dataItemProfile/metadataQueries.js' import { getDataItemProfileOrgUnitCompatibility } from '../compatibility/getDataItemProfileOrgUnitCompatibility.js' @@ -38,7 +38,16 @@ const PREDICTION_DIFFERENCES = { }, } -// The tool's reason names, before the library renamed them +/* Cases at the region, where the tool leaves out PARTLY_ASSIGNED (only some + * of its districts or facilities are assigned): the library notes it */ +const TOOL_LEAVES_OUT_PARTLY_ASSIGNED = new Set([ + 'ou-above__level-3-region', + 'ou-above__region', + 'ou-agg-d1-3__region', + 'ou-prog-event__region', +]) + +// The tool's names for the library's reasons const REASON_BY_TOOL_NAME = { BELOW_COLLECTION: 'ASSIGNED_AT_HIGHER_LEVEL', AGGREGATION_LEVEL: 'STOPPED_BY_AGGREGATION_LEVEL', @@ -178,13 +187,14 @@ const judgeCase = async (hierarchy, { item, query }) => { ) const coverage = await fetchOrgUnitCoverage( createServer(hierarchy, item).createEngine(), - { sources: getCountableSources([profile]), orgUnits } + { sourceKeys: getDataItemProfileSourceKeys([profile]), orgUnits } ) - return getDataItemProfileOrgUnitCompatibility(profile, { - orgUnits, - coverage, - })[0] + return getDataItemProfileOrgUnitCompatibility( + profile, + { orgUnits }, + { orgUnitCoverage: coverage } + )[0] } const getExpected = ({ id, expected, observed }) => { @@ -196,30 +206,39 @@ const getExpected = ({ id, expected, observed }) => { error?.startsWith('E7143') ) - return isRefused - ? { status: 'none', reasons: ['EMPTY_GROUP'] } - : { - status: expected.compatibility, - reasons: expected.reasons.map( - (reason) => REASON_BY_TOOL_NAME[reason] ?? reason - ), - } + if (isRefused) { + return { status: 'none', reasons: ['EMPTY_GROUP'] } + } + + const reasons = expected.reasons.map( + (reason) => REASON_BY_TOOL_NAME[reason] ?? reason + ) + + return { + status: expected.compatibility, + reasons: TOOL_LEAVES_OUT_PARTLY_ASSIGNED.has(id) + ? [...reasons, 'PARTLY_ASSIGNED'] + : reasons, + } } /* What analytics must have returned on every version for the library's - * status: none, nothing (or the refusal of an empty group); otherwise, never - * an error. A full result says nothing is left out, not that there is data: - * a program with no event in an org unit gives nothing there. */ + * status: none, nothing (or the refusal of an empty group); partial, some + * values (the ones that reach the org unit); full, never an error. A full + * result says nothing is left out, not that there is data: a program with no + * event in an org unit gives nothing there. */ +const ANSWERS_BY_STATUS = { + none: ['EMPTY'], + partial: ['VALUE'], + full: ['VALUE', 'EMPTY'], +} + const agreesWithAnalytics = ({ status, reasons }, observed) => - Object.values(observed).every((answer) => { - if (reasons.includes('EMPTY_GROUP')) { - return answer.status === 'ERROR' - } - - return status === 'none' - ? answer.status === 'EMPTY' - : answer.status !== 'ERROR' - }) + Object.values(observed).every((answer) => + reasons.includes('EMPTY_GROUP') + ? answer.status === 'ERROR' + : ANSWERS_BY_STATUS[status].includes(answer.status) + ) describe('org unit fixtures', () => { describe.each(CASE_GROUPS)('%s', (group) => { @@ -230,15 +249,9 @@ describe('org unit fixtures', () => { async (_, fixtureCase) => { const result = await judgeCase(hierarchy, fixtureCase) - /* PARTLY_ASSIGNED is informational: the tool leaves it out - * where the org unit has other children at that level */ expect({ status: result.status, - reasons: result.reasons.filter( - (reason) => - reason !== 'PARTLY_ASSIGNED' || - fixtureCase.expected.reasons?.includes(reason) - ), + reasons: result.reasons, }).toEqual(getExpected(fixtureCase)) expect(agreesWithAnalytics(result, fixtureCase.observed)).toBe( true diff --git a/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js index cafc7878a..43bfe3726 100644 --- a/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js +++ b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js @@ -7,7 +7,10 @@ import { getFirstOrLastValuePeriod, getYearsTouched, } from '../periods/firstLastValues.js' -import { getPeriodDates } from '../periods/periodRanges.js' +import { + getFixedPeriodOfTypeByDate, + getPeriodDates, +} from '../periods/periodRanges.js' import { getPeriodTypeOfPeriodId } from '../periods/periodTypes.js' import { getPeriodAggregationType } from '../profile/collectSources.js' @@ -41,14 +44,14 @@ const LIBRARY_STATUS = { ERROR: 'unknown', } -const CARRYING = +const FIRST_OR_LAST_AGGREGATION = /^(FIRST|LAST)(_AVERAGE_ORG_UNIT|_FIRST_ORG_UNIT|_LAST_ORG_UNIT)?$/ const getItemParts = (item) => [item, ...(item.operands ?? [])] -const isCarrying = (item) => +const takesFirstOrLast = (item) => getItemParts(item).some(({ aggregationType }) => - CARRYING.test(aggregationType) + FIRST_OR_LAST_AGGREGATION.test(aggregationType) ) const hasReportingRate = (item) => @@ -75,12 +78,12 @@ const toExpected = ({ item }, { status }) => { return { status: 'none', reason: 'REPORTING_RATE_TOO_SHORT' } } - return isCarrying(item) + return takesFirstOrLast(item) ? { status: 'full', reason: 'EARLIER_PERIOD_VALUE' } : { status: 'full', reason: 'REPEATED_VALUE' } } - if (status === 'EMPTY' && isCarrying(item)) { + if (status === 'EMPTY' && takesFirstOrLast(item)) { return { status: 'none', reason: 'NO_EARLIER_PERIOD_VALUE' } } @@ -98,21 +101,21 @@ const describeLibrary = ({ status, reasons }) => reasons.length ? `${status} [${reasons.join(', ')}]` : status /* Cases the metadata can't see: the library's answer differs from what - * analytics returns, on purpose, so they are not compared. Capability 4 (the - * collected period types) is the way to find them. */ + * analytics returns, on purpose, so they are not compared. The empty-result + * check after Update is the way to find them. */ const TEST_DATA_START = '2024-01-01' -// The periods asked in one request: the case's, and another one in group 7 +// The periods asked in one request: the case's, and in the carry-windows group the other one of the pair const getRequestPeriods = ({ query }) => [query.period, query.withPeriod].filter(Boolean) const isFirstOrLast = ({ aggregationType }) => ['FIRST', 'LAST'].includes(getPeriodAggregationType(aggregationType)) -/* The data period the library says FIRST or LAST data carries into the case's - * period, by the dates of the request's periods; null when none, undefined - * when it doesn't apply */ -const predictCarriedSource = (fixtureCase) => { +/* The data period whose value the library says FIRST or LAST data takes for + * the case's period, by the dates of the request's periods; null when none, + * undefined when it doesn't apply */ +const predictFirstOrLastValuePeriod = (fixtureCase) => { const { item, query } = fixtureCase const requestDates = getRequestPeriods(fixtureCase).map((period) => getPeriodDates(period) @@ -134,10 +137,26 @@ const predictCarriedSource = (fixtureCase) => { }) } +/* What analytics can answer when FIRST or LAST should take a period before + * the test data: nothing, or (where it names the data period) the first one + * with data. Any other answer is compared, so a wrong prediction fails. */ +const answersWithoutEarlierData = (fixtureCase) => { + const firstDataPeriod = getFixedPeriodOfTypeByDate( + fixtureCase.item.collectionPeriodTypes[0], + TEST_DATA_START + ) + + return getOutcomes(fixtureCase).every(([, { value, source }]) => + source + ? getPeriodDates(source)?.startDate === firstDataPeriod?.startDate + : value === null || value === undefined + ) +} + const METADATA_BLIND_SPOTS = [ { pattern: /^mixed-place__.*__(A|B)$/, - reason: 'the library does not read which org units a data set is assigned to', + reason: 'periods and org units are judged apart: the library does not judge a data set by org unit and period type together', }, { pattern: /^mixed-history__.*__r-2024/, @@ -158,11 +177,15 @@ const METADATA_BLIND_SPOTS = [ { pattern: /^(agg|carry-dense|carry-pair)-/, applies: (fixtureCase) => { - const source = predictCarriedSource(fixtureCase) + const source = predictFirstOrLastValuePeriod(fixtureCase) - return Boolean(source) && source.endDate < TEST_DATA_START + return ( + Boolean(source) && + source.endDate < TEST_DATA_START && + answersWithoutEarlierData(fixtureCase) + ) }, - reason: 'FIRST or LAST carries a period before the test data', + reason: 'FIRST or LAST takes a period before the test data', }, { pattern: /^carry-sparse-/, @@ -184,7 +207,7 @@ const isBlindSpot = (fixtureCase) => pattern.test(fixtureCase.id) && applies(fixtureCase) ) -// collectionSources is optional (Addendum 1): one data set per period type otherwise +// collectionSources is optional in the fixtures: one data set per period type otherwise const getDataSets = ({ collectionSources, collectionPeriodTypes }) => collectionSources ? collectionSources.map(({ dataSet, periodType }) => ({ @@ -309,8 +332,9 @@ const getLibraryAnswer = (fixtureCase, version) => { return libraryAnswers.get(key) } -/* A case the library can't read yet: a request without a period type - * (detection requests), or operands without ids */ +/* A case the metadata check can't read: a request without a period type + * (the detection requests, for the after-Update check), or operands without + * ids */ const canRead = (fixtureCase) => { try { return ( @@ -352,8 +376,15 @@ const summarize = (mismatches) => ).map(({ key, count, example }) => `${count}× ${key}, e.g. ${example}`) const fixtures = readFixtures(FIXTURES_DIR) -const groups = [...new Set(fixtures.map(({ group }) => group))] const allCases = fixtures.flatMap(({ cases }) => cases) +const casesOf = (group) => + fixtures + .filter((fixture) => fixture.group === group) + .flatMap((fixture) => fixture.cases) +const allGroups = [...new Set(fixtures.map(({ group }) => group))] +// The detection requests are for the after-Update check: nothing to compare here +const NOT_COMPARED_GROUPS = ['detection-requests'] +const groups = allGroups.filter((group) => !NOT_COMPARED_GROUPS.includes(group)) describe('period type fixtures', () => { it('are there', () => { @@ -385,20 +416,21 @@ describe('period type fixtures', () => { ).toEqual([]) }) - /* Group 7 names the data period each value comes from. Where every period - * holds data (the dense layout), the library must pick the same one. */ - it('carry the data period analytics names', () => { + /* The carry-windows group names the data period each FIRST or LAST value + * comes from. Where every period holds data (the dense layout), the + * library must pick the same one. */ + it('pick the data period analytics names for FIRST and LAST', () => { const cases = allCases.filter( (fixtureCase) => fixtureCase.id.startsWith('carry-') && !isBlindSpot(fixtureCase) && - predictCarriedSource(fixtureCase) !== undefined + predictFirstOrLastValuePeriod(fixtureCase) !== undefined ) const startOf = (period) => period ? getPeriodDates(period)?.startDate ?? period : null const mismatches = cases.flatMap((fixtureCase) => { const predicted = - predictCarriedSource(fixtureCase)?.startDate ?? null + predictFirstOrLastValuePeriod(fixtureCase)?.startDate ?? null return getOutcomes(fixtureCase) .filter(([, { source }]) => startOf(source) !== predicted) @@ -412,14 +444,18 @@ describe('period type fixtures', () => { expect(mismatches.slice(0, 20)).toEqual([]) }) + it('leave out only the groups the metadata check can’t read', () => { + expect( + allGroups.filter((group) => !casesOf(group).some(canRead)) + ).toEqual(NOT_COMPARED_GROUPS) + }) + it.each(groups)('%s: the library agrees with analytics', (group) => { - const cases = fixtures - .filter((fixture) => fixture.group === group) - .flatMap((fixture) => fixture.cases) - .filter( - (fixtureCase) => - canRead(fixtureCase) && !isBlindSpot(fixtureCase) - ) + const cases = casesOf(group).filter( + (fixtureCase) => canRead(fixtureCase) && !isBlindSpot(fixtureCase) + ) + + expect(cases.length).toBeGreaterThan(0) const mismatches = cases.flatMap((fixtureCase) => getOutcomes(fixtureCase) .map(([version, outcome]) => ({ diff --git a/src/modules/dataItemProfile/__tests__/sources.spec.js b/src/modules/dataItemProfile/__tests__/sources.spec.js index e07c20b35..66bfba2ea 100644 --- a/src/modules/dataItemProfile/__tests__/sources.spec.js +++ b/src/modules/dataItemProfile/__tests__/sources.spec.js @@ -76,7 +76,11 @@ describe('sources', () => { const weekly = dataSetSource('weeklyForm', [element('elementA')]) expect(getItemOperands({ sources: [monthly, weekly] })).toEqual([ - { element: element('elementA'), sources: [monthly, weekly] }, + { + key: 'element:elementA:SUM', + element: element('elementA'), + sources: [monthly, weekly], + }, ]) }) @@ -94,11 +98,32 @@ describe('sources', () => { const program = programSource('programAAA') expect(getItemOperands({ sources: [rate, program] })).toEqual([ - { reportingRate: true, sources: [rate] }, - { program: true, sources: [program] }, + { + key: 'reportingRate:monthlyForm', + reportingRate: true, + sources: [rate], + }, + { + key: 'program:programAAA::', + program: true, + sources: [program], + }, ]) }) + it('keys a program apart by where and how its indicators place values', () => { + expect( + getItemOperands({ + sources: [ + programSource('programAAA', { + orgUnitField: 'REGISTRATION', + missingPeriodBoundaries: true, + }), + ], + })[0].key + ).toBe('program:programAAA:REGISTRATION:missingPeriodBoundaries') + }) + it('has no operand without sources', () => { expect(getItemOperands({ sources: [] })).toEqual([]) }) diff --git a/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js b/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js index 45a94ae35..0b25dba0a 100644 --- a/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js +++ b/src/modules/dataItemProfile/compatibility/__tests__/combineResults.spec.js @@ -1,4 +1,6 @@ import { + combineAddedUpResults, + combineExpressionResults, combineOperandResults, combineResults, createResult, @@ -47,6 +49,51 @@ describe('combineResults', () => { expect(combineResults([])).toEqual(full()) }) + describe('combineAddedUpResults', () => { + it('is none when all are, partial when some are none or partial', () => { + expect( + combineAddedUpResults([ + none(['PERIOD_TOO_SHORT']), + none(['NO_EARLIER_PERIOD_VALUE']), + ]) + ).toEqual(none(['PERIOD_TOO_SHORT', 'NO_EARLIER_PERIOD_VALUE'])) + expect( + combineAddedUpResults([full(), none(['PERIOD_TOO_SHORT'])]) + ).toEqual(partial(['PERIOD_TOO_SHORT'])) + expect( + combineAddedUpResults([full(), partial(['OPERAND_PARTIAL'])]) + ).toEqual(partial(['OPERAND_PARTIAL'])) + }) + + it('is unknown when the results without none are all unknown', () => { + expect( + combineAddedUpResults([ + none(['PERIOD_TOO_SHORT']), + getUnknownResult('UNKNOWN_PERIOD'), + ]) + ).toEqual( + createResult('unknown', ['PERIOD_TOO_SHORT', 'UNKNOWN_PERIOD']) + ) + expect( + combineAddedUpResults([ + full(), + none(['PERIOD_TOO_SHORT']), + getUnknownResult('UNKNOWN_PERIOD'), + ]) + ).toEqual(partial(['PERIOD_TOO_SHORT', 'UNKNOWN_PERIOD'])) + }) + + it('is otherwise the most severe of the rest, and full for none', () => { + expect( + combineAddedUpResults([ + full(), + getUnknownResult('UNSUPPORTED_VERSION'), + ]) + ).toEqual(getUnknownResult('UNSUPPORTED_VERSION')) + expect(combineAddedUpResults([])).toEqual(full()) + }) + }) + describe('combineOperandResults', () => { it('says first when an operand of an expression gives none or leaves values out', () => { expect( @@ -60,6 +107,34 @@ describe('combineResults', () => { ).toEqual(partial(['OPERAND_PARTIAL', 'PERIOD_TYPE_MISMATCH'])) }) + it('adds operands up when a missing value counts as 0', () => { + expect( + combineOperandResults( + [full(), none(['PERIOD_TOO_SHORT'])], + 'SKIP_IF_ALL_VALUES_MISSING' + ) + ).toEqual(partial(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + expect( + combineOperandResults( + [none(['PERIOD_TOO_SHORT']), partial(['REPEATED_VALUE'])], + 'NEVER_SKIP' + ) + ).toEqual( + partial([ + 'OPERAND_EMPTY', + 'OPERAND_PARTIAL', + 'PERIOD_TOO_SHORT', + 'REPEATED_VALUE', + ]) + ) + expect( + combineOperandResults( + [none(['PERIOD_TOO_SHORT']), none(['PERIOD_TOO_SHORT'])], + 'SKIP_IF_ALL_VALUES_MISSING' + ) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + }) + it('says nothing more for a single operand, or a full result', () => { expect(combineOperandResults([none(['PERIOD_TOO_SHORT'])])).toEqual( none(['PERIOD_TOO_SHORT']) @@ -67,4 +142,60 @@ describe('combineResults', () => { expect(combineOperandResults([full(), full()])).toEqual(full()) }) }) + + describe('combineExpressionResults', () => { + const results = { + a: full(), + b: none(['PERIOD_TOO_SHORT']), + } + const resultOf = (key) => results[key] + + it('needs every operand without an expression', () => { + expect( + combineExpressionResults(undefined, ['a', 'b'], resultOf) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + }) + + it('combines nested parts by their strategies', () => { + const sum = { + missingValueStrategy: 'SKIP_IF_ALL_VALUES_MISSING', + parts: [{ operand: 'a' }, { operand: 'b' }], + } + + expect(combineExpressionResults(sum, [], resultOf)).toEqual( + partial(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT']) + ) + expect( + combineExpressionResults( + { + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + parts: [sum, { operand: 'b' }], + }, + [], + resultOf + ) + ).toEqual(none(['OPERAND_EMPTY', 'PERIOD_TOO_SHORT'])) + }) + + it('leaves out parts with no operand, and is full without any', () => { + const constants = { + missingValueStrategy: 'SKIP_IF_ALL_VALUES_MISSING', + parts: [], + } + + expect( + combineExpressionResults( + { + missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING', + parts: [{ operand: 'b' }, constants], + }, + [], + resultOf + ) + ).toEqual(none(['PERIOD_TOO_SHORT'])) + expect(combineExpressionResults(undefined, [], resultOf)).toEqual( + full() + ) + }) + }) }) diff --git a/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js b/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js index f30ff736a..a4beba8aa 100644 --- a/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js +++ b/src/modules/dataItemProfile/compatibility/__tests__/getDataItemProfileOrgUnitCompatibility.spec.js @@ -1,173 +1,15 @@ -import { inDataSets } from '../../../../__fixtures__/dataItemProfileMetadata.js' -import { getDataItemProfile } from '../../getDataItemProfile.js' -import { getDataItemProfileCompatibility } from '../../getDataItemProfileCompatibility.js' +import { + ORG_UNIT_COVERAGE as COVERAGE, + orgUnitProfileOf as profileOf, +} from '../../../../__fixtures__/dataItemProfileOrgUnits.js' import { getDataItemProfileOrgUnitCompatibility } from '../getDataItemProfileOrgUnitCompatibility.js' -const METADATA = { - dataElements: { - facility: { - aggregationType: 'SUM', - dataSets: inDataSets(['Monthly']), - }, - district: { - aggregationType: 'SUM', - dataSets: inDataSets(['Quarterly']), - }, - twoForms: { - aggregationType: 'SUM', - dataSets: inDataSets(['Monthly', 'Weekly']), - }, - twoLevels: { - aggregationType: 'SUM', - dataSets: inDataSets(['Monthly', 'Quarterly']), - }, - cappedAtDistrict: { - aggregationType: 'SUM', - dataSets: inDataSets(['Monthly']), - aggregationLevels: [2], - }, - cappedWithDistrictForm: { - aggregationType: 'SUM', - dataSets: inDataSets(['Monthly', 'Quarterly']), - aggregationLevels: [2], - }, - orphan: { aggregationType: 'SUM', dataSets: [] }, - }, - dataSets: { MonthlyForm: { periodType: 'Monthly' } }, - programs: { eventProgra: { programType: 'WITHOUT_REGISTRATION' } }, - programIndicators: { - pi: { program: 'eventProgra' }, - piByOwner: { program: 'eventProgra', orgUnitField: 'OWNER_AT_END' }, - piByRegistr: { program: 'eventProgra', orgUnitField: 'REGISTRATION' }, - piByAttribu: { program: 'eventProgra', orgUnitField: 'attributeAAA' }, - }, - indicators: { - ratio: { numerator: '#{facility}', denominator: '#{district}' }, - completeness: { - numerator: '#{facility}', - denominator: 'R{MonthlyForm.REPORTING_RATE}', - }, - partOfTotal: { numerator: '#{twoLevels}', denominator: '#{facility}' }, - casesPerFacility: { numerator: 'I{pi}', denominator: '#{facility}' }, - constantsOnly: { numerator: 'C{constantAA}', denominator: '[days]' }, - }, -} - -const profileOf = (id, dimensionItemType = 'DATA_ELEMENT') => - getDataItemProfile({ id, dimensionItemType }, METADATA) - -/* A nation (level 1) with 2 districts (2) and 4 facilities (3). - * MonthlyForm: 3 of the 4 facilities (missing facilityDDD, under districtBBB), - * and the nation. QuarterlyForm: both districts. WeeklyForm: facilityDDD. */ -const unit = (id, level, path) => ({ id, level, path }) -const COVERAGE = { - levels: [ - { id: 'levelNation', level: 1 }, - { id: 'levelDistri', level: 2 }, - { id: 'levelFacili', level: 3 }, - ], - orgUnits: { - nationUnit1: unit('nationUnit1', 1, '/nationUnit1'), - districtAAA: unit('districtAAA', 2, '/nationUnit1/districtAAA'), - districtBBB: unit('districtBBB', 2, '/nationUnit1/districtBBB'), - facilityAAA: unit( - 'facilityAAA', - 3, - '/nationUnit1/districtAAA/facilityAAA' - ), - facilityDDD: unit( - 'facilityDDD', - 3, - '/nationUnit1/districtBBB/facilityDDD' - ), - }, - rootIds: ['nationUnit1'], - userOrgUnitIds: ['districtBBB'], - // clinicGroup: facilityAAA and facilityDDD. mixedGroupA: districtBBB and facilityAAA - groups: { - clinicGroup: { 3: 2 }, - mixedGroupA: { 2: 1, 3: 1 }, - emptyGroupA: {}, - }, - assignedOrgUnitCounts: { - MonthlyForm: { 1: 1, 3: 3 }, - QuarterlyForm: { 2: 2 }, - WeeklyForm: { 3: 1 }, - eventProgra: { 3: 2 }, - }, - counts: { - nationUnit1: { - totals: { 1: 1, 2: 2, 3: 4 }, - sources: { - MonthlyForm: { byLevel: { 1: 1, 3: 3 } }, - QuarterlyForm: { byLevel: { 2: 2 } }, - WeeklyForm: { byLevel: { 3: 1 } }, - eventProgra: { byLevel: { 3: 2 } }, - }, - }, - districtAAA: { - totals: { 2: 1, 3: 2 }, - sources: { - MonthlyForm: { byLevel: { 3: 2 }, ancestors: 1 }, - QuarterlyForm: { byLevel: { 2: 1 } }, - WeeklyForm: { byLevel: {} }, - }, - }, - districtBBB: { - totals: { 2: 1, 3: 2 }, - sources: { - MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, - QuarterlyForm: { byLevel: { 2: 1 } }, - WeeklyForm: { byLevel: { 3: 1 } }, - }, - }, - facilityAAA: { - totals: { 3: 1 }, - sources: { - MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, - QuarterlyForm: { byLevel: {}, ancestors: 1 }, - }, - }, - facilityDDD: { - totals: { 3: 1 }, - sources: { - eventProgra: { byLevel: {} }, - MonthlyForm: { byLevel: {}, ancestors: 1 }, - QuarterlyForm: { byLevel: {}, ancestors: 1 }, - WeeklyForm: { byLevel: { 3: 1 } }, - }, - }, - 'clinicGroup:3:': { - totals: { 3: 2 }, - sources: { - MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 }, - QuarterlyForm: { byLevel: {}, ancestors: 2 }, - }, - }, - 'mixedGroupA:2:': { - totals: { 2: 1, 3: 2 }, - sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, - }, - 'mixedGroupA:3:': { - totals: { 3: 1 }, - sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, - }, - 'mixedGroupA:2:districtAAA': { - totals: { 2: 0, 3: 0 }, - sources: { MonthlyForm: { byLevel: { 3: 0 }, ancestors: 1 } }, - }, - 'mixedGroupA:3:districtAAA': { - totals: { 3: 1 }, - sources: { MonthlyForm: { byLevel: { 3: 1 }, ancestors: 1 } }, - }, - }, -} - const judge = (id, orgUnits, { type, coverage = COVERAGE } = {}) => - getDataItemProfileOrgUnitCompatibility(profileOf(id, type), { - orgUnits, - coverage, - }) + getDataItemProfileOrgUnitCompatibility( + profileOf(id, type), + { orgUnits }, + { orgUnitCoverage: coverage } + ) describe('getDataItemProfileOrgUnitCompatibility', () => { it('is full where every org unit at the deepest level assigned is', () => { @@ -181,7 +23,7 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { ]) }) - it('is full where only some are, since the others collect nothing', () => { + it('is full where only some are, since the others aren’t assigned', () => { expect(judge('facility', ['nationUnit1'])).toEqual([ { id: 'nationUnit1', @@ -192,8 +34,20 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { ]) }) - it('is none at an org unit not assigned, though assigned at its level elsewhere', () => { + it('is none, assigned higher, where only an ancestor of the org unit is assigned', () => { expect(judge('facility', ['facilityDDD'])).toMatchObject([ + { + status: 'none', + reasons: ['ASSIGNED_AT_HIGHER_LEVEL'], + assignment: null, + }, + ]) + }) + + it('is none, not assigned, where neither the org unit nor its ancestors are', () => { + expect( + judge('pi', ['facilityDDD'], { type: 'PROGRAM_INDICATOR' }) + ).toMatchObject([ { status: 'none', reasons: ['NOT_ASSIGNED'], assignment: null }, ]) }) @@ -212,8 +66,9 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { }) it('counts an element where any of its data sets is assigned', () => { + // The monthly form is assigned to the nation above facilityDDD: its values are left out there expect(judge('twoForms', ['facilityDDD'])).toMatchObject([ - { status: 'full' }, + { status: 'partial', reasons: ['ASSIGNED_AT_HIGHER_LEVEL'] }, ]) expect(judge('twoForms', ['nationUnit1'])).toMatchObject([ { @@ -224,6 +79,31 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { ]) }) + it('is not partly assigned when one data set is assigned to every org unit', () => { + const coverage = { + ...COVERAGE, + counts: { + ...COVERAGE.counts, + districtBBB: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 2 } }, + WeeklyForm: { byLevel: { 3: 1 } }, + }, + }, + }, + } + + expect(judge('twoForms', ['districtBBB'], { coverage })).toEqual([ + { + id: 'districtBBB', + status: 'full', + reasons: [], + assignment: { assigned: 2, total: 2, level: 3 }, + }, + ]) + }) + it('is partial when another data set is assigned at a higher level: its values are left out', () => { expect(judge('twoLevels', ['facilityAAA'])).toEqual([ { @@ -252,7 +132,23 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { expect( judge('completeness', ['facilityDDD'], { type: 'INDICATOR' }) ).toMatchObject([ - { status: 'none', reasons: ['OPERAND_EMPTY', 'NOT_ASSIGNED'] }, + { + status: 'none', + reasons: ['OPERAND_EMPTY', 'ASSIGNED_AT_HIGHER_LEVEL'], + }, + ]) + }) + + it('is partial for a sum where one item has no value, which counts as 0', () => { + expect( + judge('facilityPlusDistrict', ['facilityAAA'], { + type: 'INDICATOR', + }) + ).toMatchObject([ + { + status: 'partial', + reasons: ['OPERAND_EMPTY', 'ASSIGNED_AT_HIGHER_LEVEL'], + }, ]) }) @@ -318,15 +214,85 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { ]) }) - it('is none for a level above every parent org unit', () => { + it('is none, with no org units there, for a level above every parent or below the hierarchy', () => { expect(judge('facility', ['facilityAAA', 'LEVEL-2'])).toEqual([ { id: 'LEVEL-2', status: 'none', - reasons: ['NOT_ASSIGNED'], + reasons: ['NO_ORG_UNITS_AT_LEVEL'], assignment: null, }, ]) + expect(judge('facility', ['nationUnit1', 'LEVEL-9'])).toMatchObject([ + { status: 'none', reasons: ['NO_ORG_UNITS_AT_LEVEL'] }, + ]) + }) + + it('adds up a level under several parents: one with nothing assigned only lowers the counts', () => { + expect( + judge('pi', ['districtAAA', 'districtBBB', 'LEVEL-3'], { + type: 'PROGRAM_INDICATOR', + }) + ).toEqual([ + { + id: 'LEVEL-3', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + assignment: { assigned: 2, total: 4, level: 3 }, + }, + ]) + }) + + it('is partial for a level under several parents where values are left out', () => { + expect( + judge('twoLevels', ['districtAAA', 'districtBBB', 'LEVEL-3']) + ).toMatchObject([ + { + status: 'partial', + reasons: ['ASSIGNED_AT_HIGHER_LEVEL', 'PARTLY_ASSIGNED'], + assignment: { assigned: 3, total: 4, level: 3 }, + }, + ]) + }) + + it('is partial for a level under several parents where an operand has no value under one', () => { + // districtBBB: facilities collect the numerator, nothing the denominator + const coverage = { + ...COVERAGE, + counts: { + ...COVERAGE.counts, + districtBBB: { + totals: { 2: 1, 3: 2 }, + sources: { + MonthlyForm: { byLevel: { 3: 1 } }, + QuarterlyForm: { byLevel: {} }, + }, + }, + }, + } + + expect( + judge('ratio', ['LEVEL-2', 'districtAAA', 'districtBBB'], { + type: 'INDICATOR', + coverage, + }) + ).toMatchObject([ + { + status: 'partial', + reasons: ['OPERAND_EMPTY', 'PARTLY_ASSIGNED'], + }, + ]) + }) + + it('takes the user org units as parents of a level', () => { + expect(judge('facility', ['USER_ORGUNIT', 'LEVEL-3'])).toEqual([ + { + id: 'LEVEL-3', + status: 'full', + reasons: ['PARTLY_ASSIGNED'], + assignment: { assigned: 1, total: 2, level: 3 }, + }, + ]) }) it('judges event data where its program is assigned', () => { @@ -354,7 +320,14 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { expect( judge('casesPerFacility', ['facilityDDD'], { type: 'INDICATOR' }) ).toMatchObject([ - { status: 'none', reasons: ['OPERAND_EMPTY', 'NOT_ASSIGNED'] }, + { + status: 'none', + reasons: [ + 'OPERAND_EMPTY', + 'NOT_ASSIGNED', + 'ASSIGNED_AT_HIGHER_LEVEL', + ], + }, ]) }) @@ -462,41 +435,3 @@ describe('getDataItemProfileOrgUnitCompatibility', () => { ]) }) }) - -describe('getDataItemProfileCompatibility, with org units', () => { - it('judges periods and org units apart, and combines them overall', () => { - const result = getDataItemProfileCompatibility( - profileOf('facility'), - { periods: ['2025Q1'], orgUnits: ['nationUnit1', 'facilityDDD'] }, - { orgUnitCoverage: COVERAGE } - ) - - expect(result).toMatchObject({ - status: 'none', - reasons: ['NOT_ASSIGNED', 'PARTLY_ASSIGNED'], - periods: [{ id: '2025Q1', status: 'full' }], - orgUnits: [ - { id: 'nationUnit1', status: 'full' }, - { id: 'facilityDDD', status: 'none' }, - ], - }) - }) - - it('leaves org units out when none are asked', () => { - expect( - getDataItemProfileCompatibility(profileOf('facility'), { - periods: ['2025Q1'], - }) - ).not.toHaveProperty('orgUnits') - }) - - it('judges org units alone', () => { - expect( - getDataItemProfileCompatibility( - profileOf('facility'), - { orgUnits: ['districtAAA'] }, - { orgUnitCoverage: COVERAGE } - ) - ).toMatchObject({ status: 'full', periods: [] }) - }) -}) diff --git a/src/modules/dataItemProfile/compatibility/combineResults.js b/src/modules/dataItemProfile/compatibility/combineResults.js index 725a84b07..a94a7360e 100644 --- a/src/modules/dataItemProfile/compatibility/combineResults.js +++ b/src/modules/dataItemProfile/compatibility/combineResults.js @@ -7,6 +7,7 @@ import { REASON_OPERAND_EMPTY, REASON_OPERAND_PARTIAL, REASON_ORDER, + SKIP_IF_ANY_VALUE_MISSING, } from '../constants.js' export const createResult = (status, reasons = []) => ({ status, reasons }) @@ -33,22 +34,107 @@ export const combineResults = (results) => unionOfReasons(results) ) +const hasStatus = + (...statuses) => + ({ status }) => + statuses.includes(status) + +/** + * Results whose values add up, such as a relative period over its fixed + * periods, or a selection over its periods and org units: none when all are, + * partial when some give values and others none or only some, otherwise the + * most severe of the rest. When those without none are all unknown, so is + * the result. + */ +export const combineAddedUpResults = (results) => { + const reasons = unionOfReasons(results) + const isNone = hasStatus(COMPATIBILITY_NONE) + + if (results.length && results.every(isNone)) { + return createResult(COMPATIBILITY_NONE, reasons) + } + + const givesValues = results.some( + hasStatus(COMPATIBILITY_FULL, COMPATIBILITY_PARTIAL) + ) + + if (results.some(hasStatus(COMPATIBILITY_PARTIAL))) { + return createResult(COMPATIBILITY_PARTIAL, reasons) + } + + if (results.some(isNone)) { + return createResult( + givesValues ? COMPATIBILITY_PARTIAL : COMPATIBILITY_UNKNOWN, + reasons + ) + } + + return createResult( + getMostSevere(results)?.status ?? COMPATIBILITY_FULL, + reasons + ) +} + const OPERAND_REASON_BY_STATUS = { [COMPATIBILITY_NONE]: REASON_OPERAND_EMPTY, [COMPATIBILITY_PARTIAL]: REASON_OPERAND_PARTIAL, } /** - * An expression's result, from its operands': the most severe decides, and - * with more than one operand, a none or partial result says so first with - * OPERAND_EMPTY or OPERAND_PARTIAL. + * An expression's result, from its operands', by its missing value + * strategy. SKIP_IF_ANY_VALUE_MISSING (the default): the most severe + * decides. SKIP_IF_ALL_VALUES_MISSING or NEVER_SKIP: a missing value counts + * as 0, so the operands add up (combineAddedUpResults). With more than one + * operand, OPERAND_EMPTY and OPERAND_PARTIAL say first that one gives none + * or only some values. */ -export const combineOperandResults = (results) => { - const combined = combineResults(results) - const reason = - results.length > 1 && OPERAND_REASON_BY_STATUS[combined.status] - - return reason - ? { ...combined, reasons: [reason, ...combined.reasons] } - : combined +export const combineOperandResults = ( + results, + missingValueStrategy = SKIP_IF_ANY_VALUE_MISSING +) => { + const needsAll = missingValueStrategy === SKIP_IF_ANY_VALUE_MISSING + const combined = needsAll + ? combineResults(results) + : combineAddedUpResults(results) + + if (results.length < 2) { + return combined + } + + const operandReasons = needsAll + ? [OPERAND_REASON_BY_STATUS[combined.status]] + : results.map(({ status }) => OPERAND_REASON_BY_STATUS[status]) + + return createResult( + combined.status, + unionOfReasons([{ reasons: operandReasons.filter(Boolean) }, combined]) + ) +} + +/** + * An item's result from its operands' results (`resultOf(key)`), combined + * as its expression says (profile.expression); without one, all are needed. + * A part with no operand (constants only) never misses: it is left out. + */ +export const combineExpressionResults = (expression, operandKeys, resultOf) => { + const combine = ({ operand, missingValueStrategy, parts }) => { + if (operand) { + return resultOf(operand) + } + + const results = parts.map(combine).filter(Boolean) + + return results.length + ? combineOperandResults(results, missingValueStrategy) + : null + } + + return ( + combine( + expression ?? { + missingValueStrategy: SKIP_IF_ANY_VALUE_MISSING, + parts: operandKeys.map((key) => ({ operand: key })), + } + ) ?? createResult(COMPATIBILITY_FULL) + ) } diff --git a/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js b/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js index 3689d3c0b..a2a785edd 100644 --- a/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js +++ b/src/modules/dataItemProfile/compatibility/getDataItemProfileOrgUnitCompatibility.js @@ -1,8 +1,14 @@ import { COMPATIBILITY_NONE, + COMPATIBILITY_PARTIAL, + LEFT_OUT_REASONS, ORG_UNIT_ITEM_TYPE_GROUP, REASON_EMPTY_GROUP, + REASON_NO_ORG_UNITS_AT_LEVEL, REASON_NOT_ASSIGNED, + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, + REASON_PARTLY_ASSIGNED, REASON_PROFILE_UNKNOWN, REASON_UNKNOWN_ORG_UNIT, } from '../constants.js' @@ -12,7 +18,7 @@ import { } from '../orgUnits/orgUnitSelection.js' import { getItemOperands } from '../sources.js' import { - combineOperandResults, + combineExpressionResults, createResult, getMostSevere, getUnknownResult, @@ -20,29 +26,99 @@ import { } from './combineResults.js' import { getOperandResult, withAssignment } from './orgUnitSourceResults.js' -const addUpAssignments = (results) => { - const assignments = results - .map(({ assignment }) => assignment) +/* The org units of all requested levels add up: only those that are + * assigned count, and the assignment adds up over all of them (an org unit + * with nothing assigned adds its org units to the total) */ +const addUpAssignments = (judged) => { + const assignments = judged + .map(({ result }) => result.assignment) .filter(Boolean) - const sum = (key) => - assignments.reduce((total, item) => total + item[key], 0) - - return assignments.length - ? { - assigned: sum('assigned'), - total: sum('total'), - level: Math.max(...assignments.map(({ level }) => level)), - } - : null + + if (!assignments.length) { + return null + } + + const level = Math.max(...assignments.map((assignment) => assignment.level)) + const assigned = assignments.reduce((sum, item) => sum + item.assigned, 0) + const total = judged.reduce( + (sum, { result, counts }) => + sum + (result.assignment?.total ?? counts.totals?.[level] ?? 0), + 0 + ) + + return { assigned, total, level } } -// The item at one requested level: each operand over its sources, the most severe decides -const getResultAtLevel = (operands, counts) => { - const results = operands.map((operand) => getOperandResult(operand, counts)) +/* Where an operand has no value, the values of the others are dropped: they + * are left out, unlike values of an org unit nothing is assigned to */ +const DROPPED_BY_OPERAND_REASONS = new Set([ + REASON_OPERAND_EMPTY, + REASON_OPERAND_PARTIAL, +]) + +const leavesValuesOut = ({ status, reasons }) => + status === COMPATIBILITY_PARTIAL || + reasons.some( + (reason) => + LEFT_OUT_REASONS.has(reason) || + DROPPED_BY_OPERAND_REASONS.has(reason) + ) + +/* A level under several parents, or a group with members at several levels: + * the values of all add up. Where nothing is assigned, nothing is left out, + * only fewer org units are assigned (PARTLY_ASSIGNED); where values can't + * reach the level asked, or an operand has none, they are left out + * (partial). */ +const combineRequestedLevels = (judged) => { + const results = judged.map(({ result }) => result) + const reasons = unionOfReasons(results) + + if (results.every(({ status }) => status === COMPATIBILITY_NONE)) { + return withAssignment(createResult(COMPATIBILITY_NONE, reasons)) + } + + const assignment = addUpAssignments(judged) + const status = results.some(leavesValuesOut) + ? COMPATIBILITY_PARTIAL + : getMostSevere( + results.filter(({ status }) => status !== COMPATIBILITY_NONE) + ).status + const isPartlyAssigned = + assignment && assignment.assigned < assignment.total return withAssignment( - combineOperandResults(results), - getMostSevere(results)?.assignment + createResult( + status, + unionOfReasons([ + { + reasons: reasons.filter( + (reason) => + reason !== REASON_NOT_ASSIGNED && + reason !== REASON_PARTLY_ASSIGNED + ), + }, + { reasons: isPartlyAssigned ? [REASON_PARTLY_ASSIGNED] : [] }, + ]) + ), + assignment + ) +} + +/* The item at one requested level: each operand over its sources, combined + * as its expression says; the assignment of the most severe operand */ +const getResultAtLevel = ({ expression, operands }, counts) => { + const results = new Map( + operands.map((operand) => [ + operand.key, + getOperandResult(operand, counts), + ]) + ) + + return withAssignment( + combineExpressionResults(expression, [...results.keys()], (key) => + results.get(key) + ), + getMostSevere([...results.values()])?.assignment ) } @@ -55,7 +131,7 @@ const isEmptyGroup = (selectionItem, coverage) => const getSelectionItemCompatibility = ( selectionItem, - { operands, parentOrgUnitIds, coverage } + { item, parentItems, coverage } ) => { if (isEmptyGroup(selectionItem, coverage)) { return withAssignment( @@ -65,7 +141,7 @@ const getSelectionItemCompatibility = ( const requestedLevels = getRequestedLevels( selectionItem, - parentOrgUnitIds, + parentItems, coverage ) @@ -73,30 +149,27 @@ const getSelectionItemCompatibility = ( return withAssignment(getUnknownResult(REASON_UNKNOWN_ORG_UNIT)) } - const results = requestedLevels + const judged = requestedLevels // Parents a group has no member under add nothing .filter( ({ groupId, countsKey, level }) => !groupId || coverage.counts[countsKey]?.totals?.[level] > 0 ) - .map(({ countsKey, level }) => - getResultAtLevel(operands, { - ...coverage.counts[countsKey], - assignedOrgUnitCounts: coverage.assignedOrgUnitCounts, - level, - }) - ) + .map(({ countsKey, level }) => { + const counts = { ...coverage.counts[countsKey], level } - if (!results.length) { + return { counts, result: getResultAtLevel(item, counts) } + }) + + if (!judged.length) { return withAssignment( - createResult(COMPATIBILITY_NONE, [REASON_NOT_ASSIGNED]) + createResult(COMPATIBILITY_NONE, [REASON_NO_ORG_UNITS_AT_LEVEL]) ) } - return withAssignment( - createResult(getMostSevere(results).status, unionOfReasons(results)), - addUpAssignments(results) - ) + return judged.length === 1 + ? judged[0].result + : combineRequestedLevels(judged) } /** @@ -108,7 +181,7 @@ const getSelectionItemCompatibility = ( * Assigned only at higher levels: none, ASSIGNED_AT_HIGHER_LEVEL. Not * assigned there: none, NOT_ASSIGNED. Stopped by the element's aggregation * levels: none, STOPPED_BY_AGGREGATION_LEVEL. Assigned to only some org units - * at the deepest level: full, since the others collect nothing, with + * at the deepest level: full, since nothing is left out, with * PARTLY_ASSIGNED and the counts (`assignment`). An element in several data * sets is full where one is assigned, and partial when another's values can't * reach the org unit. A group is judged at each level its members are at; a @@ -118,9 +191,10 @@ const getSelectionItemCompatibility = ( */ export const getDataItemProfileOrgUnitCompatibility = ( profile, - { orgUnits = [], coverage } = {} + { orgUnits = [] } = {}, + { orgUnitCoverage: coverage } = {} ) => { - const { selectionItems, parentOrgUnitIds } = readOrgUnitSelection(orgUnits) + const { selectionItems, parentItems } = readOrgUnitSelection(orgUnits) const judge = (getResult) => selectionItems.map((selectionItem) => ({ id: selectionItem.id, @@ -139,12 +213,15 @@ export const getDataItemProfileOrgUnitCompatibility = ( ) } - const operands = getItemOperands(profile) + const item = { + expression: profile.expression, + operands: getItemOperands(profile), + } return judge((selectionItem) => getSelectionItemCompatibility(selectionItem, { - operands, - parentOrgUnitIds, + item, + parentItems, coverage, }) ) diff --git a/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js b/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js index 86f99f9a2..48ad3e7c5 100644 --- a/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js +++ b/src/modules/dataItemProfile/compatibility/getDataItemProfilePeriodCompatibility.js @@ -13,18 +13,32 @@ import { canAggregateInto, getCandidatePeriodTypes, getPeriodTypeOfPeriodId, + isPeriodType, isPeriodTypeSupported, } from '../periods/periodTypes.js' +import { getRelativePeriodFixedPeriods } from '../periods/relativePeriodRanges.js' import { getSourcePeriodType } from '../profile/assignedPeriodTypes.js' import { getItemOperands, getSourceId } from '../sources.js' -import { combineOperandResults, getUnknownResult } from './combineResults.js' +import { + combineAddedUpResults, + combineExpressionResults, + getUnknownResult, +} from './combineResults.js' import { getOperandResult, getSourceResult } from './periodSourceResults.js' -// An expression needs all its operands: the most severe one decides -const getItemResult = (operands, query) => - combineOperandResults( - operands.map((operand) => getOperandResult(operand, query)) +// The operands' results, combined as the item's expression says +const getItemResult = ({ expression, operands }, query) => { + const results = new Map( + operands.map((operand) => [ + operand.key, + getOperandResult(operand, query), + ]) + ) + + return combineExpressionResults(expression, [...results.keys()], (key) => + results.get(key) ) +} const isSameResult = (a, b) => a.status === b.status && a.reasons.join() === b.reasons.join() @@ -68,22 +82,50 @@ const getAlignsWithData = (profile, { periodType, dates, calendar }) => { return aligned.has(null) ? null : true } +/* The date ranges a period covers for one of its types: a fixed period's, + * the fixed periods of a relative one, none for a period type */ +const getPeriodRanges = (period, periodType, options) => { + if (getPeriodTypeOfPeriodId(period)) { + const dates = getPeriodDates(period, options.calendar) + + return dates ? [dates] : null + } + + return isPeriodType(period) + ? null + : getRelativePeriodFixedPeriods(period, periodType, options) +} + /* The calendar years the selection's periods touch, as one request would, or - * null when a period has no dates (a relative period, a period type) */ -const getSelectionYears = (periods, calendar) => { - const dates = periods.map((period) => - getPeriodTypeOfPeriodId(period) - ? getPeriodDates(period, calendar) - : null - ) + * null when a fixed or relative period can't be dated. Period types aren't + * periods of a request: they don't count. */ +const getSelectionYears = (periods, options) => { + const ranges = periods + .filter((period) => !isPeriodType(period)) + .flatMap((period) => + getCandidatePeriodTypes(period, options).map((periodType) => + getPeriodRanges(period, periodType, options) + ) + ) - if (!dates.length || dates.includes(null)) { + if (!ranges.length || ranges.includes(null)) { return null } - return [...new Set(dates.flatMap(getYearsTouched))].sort((a, b) => a - b) + return [...new Set(ranges.flat().flatMap(getYearsTouched))].sort( + (a, b) => a - b + ) } +/* A result for each range of the query, added up: a relative period is + * judged over its fixed periods. Without ranges, by type alone. */ +const judgeRanges = (query, getResult) => + query.ranges + ? combineAddedUpResults( + query.ranges.map((dates) => getResult({ ...query, dates })) + ) + : getResult({ ...query, dates: null }) + const getUnknownPeriodResult = (profile, { period, periodTypes, reason }) => ({ id: period, periodTypes, @@ -108,30 +150,39 @@ const getPeriodResult = (profile, period, options) => { }) } - const dates = getPeriodTypeOfPeriodId(period) - ? getPeriodDates(period, options.calendar) - : null const queries = periodTypes.map((periodType) => ({ periodType, - dates, + ranges: getPeriodRanges(period, periodType, options), years: options.selectionYears, calendar: options.calendar, serverVersion: options.serverVersion, supported: isPeriodTypeSupported(periodType, options.serverVersion), })) - const operands = getItemOperands(profile) + const item = { + expression: profile.expression, + operands: getItemOperands(profile), + } + const isFixed = Boolean(getPeriodTypeOfPeriodId(period)) return { id: period, periodTypes, - ...agreeOn(queries, (query) => getItemResult(operands, query)), - alignsWithData: - queries.length === 1 - ? getAlignsWithData(profile, queries[0]) - : null, + ...agreeOn(queries, (query) => + judgeRanges(query, (rangeQuery) => getItemResult(item, rangeQuery)) + ), + alignsWithData: isFixed + ? getAlignsWithData(profile, { + ...queries[0], + dates: queries[0].ranges?.[0], + }) + : null, sources: profile.sources.map((source) => ({ sourceId: getSourceId(source), - ...agreeOn(queries, (query) => getSourceResult(source, query)), + ...agreeOn(queries, (query) => + judgeRanges(query, (rangeQuery) => + getSourceResult(source, rangeQuery) + ) + ), })), } } @@ -141,20 +192,23 @@ const getPeriodResult = (profile, period, options) => { * each period, `{ id, periodTypes, status, reasons, alignsWithData, sources }`, * with a result per source (aligned with `profile.sources`). * - * `periods` are fixed ids, relative ids or period types. `options` sets the - * type of relative weeks and financial years (`weeklyPeriodType`, - * `financialYearPeriodType`), the `calendar` for dates, and the - * `serverVersion` ({ major, minor }), since some versions can't answer some - * period types. The periods are taken as one request: for FIRST and LAST - * data, the years they touch decide which data periods count (other items of - * the request, like a `.periodOffset()` operand, can add years and aren't - * seen). + * `periods` are fixed ids, relative ids or period types. A relative period is + * judged over the fixed periods it covers on `options.relativePeriodDate` + * (an ISO date, today by default). `options` also sets the type of relative + * weeks and financial years (`weeklyPeriodType`, `financialYearPeriodType`), + * the `calendar` for dates, and the `serverVersion` ({ major, minor }), since + * some versions can't answer some period types. The periods are taken as one + * request: for FIRST and LAST data, the years they touch decide which data + * periods count (other items of the request, like a `.periodOffset()` + * operand, can add years and aren't seen). A period type is judged by type + * alone. */ export const getDataItemProfilePeriodCompatibility = ( profile, - { periods = [], ...options } = {} + { periods = [] } = {}, + options = {} ) => { - const selectionYears = getSelectionYears(periods, options.calendar) + const selectionYears = getSelectionYears(periods, options) return periods.map((period) => getPeriodResult(profile, period, { ...options, selectionYears }) diff --git a/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js b/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js index be1d0adc3..1f8029383 100644 --- a/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js +++ b/src/modules/dataItemProfile/compatibility/orgUnitSourceResults.js @@ -9,6 +9,7 @@ import { REASON_PARTLY_ASSIGNED, REASON_STOPPED_BY_AGGREGATION_LEVEL, } from '../constants.js' +import { getLevelsWithOrgUnits } from '../profile/assignedOrgUnitLevels.js' import { canBeAtAnyOrgUnit, getSourceId } from '../sources.js' import { createResult, unionOfReasons } from './combineResults.js' @@ -19,11 +20,6 @@ export const withAssignment = (result, assignment = null) => ({ assignment, }) -const getLevelsWithOrgUnits = (countsByLevel) => - Object.keys(countsByLevel) - .map(Number) - .filter((level) => countsByLevel[level] > 0) - /* Analytics nulls the levels up to each aggregation level for values from * org units below it (dhis2-core AggregationLevelsHelper): a value from * `assignedLevel` can't reach `requestedLevel` when an aggregation level lies @@ -40,25 +36,16 @@ const isBlockedByAggregationLevel = ( aggregationLevel < assignedLevel ) -const getNotReachingReason = ({ - byLevel, - ancestors, - assignedOrgUnitCounts, - level, -}) => { - const assignedAtThisLevelElsewhere = getLevelsWithOrgUnits( - assignedOrgUnitCounts - ).some((assignedLevel) => assignedLevel >= level) - const assignedHigher = - ancestors > 0 || - getLevelsWithOrgUnits(byLevel).some( - (assignedLevel) => assignedLevel < level - ) - - return assignedHigher && !assignedAtThisLevelElsewhere +/* Values that don't reach the level asked are assigned higher when the + * source is assigned above it, within the org unit (its ancestors, or higher + * levels under a parent); otherwise the org unit simply isn't assigned */ +const getNotReachingReason = ({ byLevel, ancestors, level }) => + ancestors > 0 || + getLevelsWithOrgUnits(byLevel).some( + (assignedLevel) => assignedLevel < level + ) ? REASON_ASSIGNED_AT_HIGHER_LEVEL : REASON_NOT_ASSIGNED -} /* One data set or program at one requested level, from its assignment * counts. Values add up from lower levels, but are never split down, so a @@ -66,7 +53,6 @@ const getNotReachingReason = ({ * deepest level assigned says how much of the org unit it covers. */ const getSourceResult = ({ sourceCounts, - assignedOrgUnitCounts = {}, aggregationLevels = [], totals, level, @@ -95,12 +81,7 @@ const getSourceResult = ({ if (!reaching.length) { return withAssignment( createResult(COMPATIBILITY_NONE, [ - getNotReachingReason({ - byLevel, - ancestors, - assignedOrgUnitCounts, - level, - }), + getNotReachingReason({ byLevel, ancestors, level }), ]) ) } @@ -112,7 +93,7 @@ const getSourceResult = ({ level: deepestLevel, } - // Org units it isn't assigned to collect nothing: nothing is left out + // Org units it isn't assigned to have no values: nothing is left out return withAssignment( createResult( COMPATIBILITY_FULL, @@ -157,11 +138,18 @@ const combineSources = (bySource) => { .map(({ assignment }) => assignment) .filter(Boolean) .sort((a, b) => b.assigned / b.total - a.assigned / a.total)[0] + // Partly assigned only when no source is assigned to all its org units + const isPartlyAssigned = + bestAssignment && bestAssignment.assigned < bestAssignment.total return withAssignment( createResult( leftOut ? COMPATIBILITY_PARTIAL : COMPATIBILITY_FULL, - reasons.filter((reason) => reason !== REASON_NOT_ASSIGNED) + reasons.filter( + (reason) => + reason !== REASON_NOT_ASSIGNED && + (reason !== REASON_PARTLY_ASSIGNED || isPartlyAssigned) + ) ), bestAssignment ) @@ -169,8 +157,7 @@ const combineSources = (bySource) => { /** * One operand ({ element, sources }, getItemOperands) at one requested level, - * from the counts kept for it in the coverage, with the `level` asked and the - * sources' `assignedOrgUnitCounts` across the hierarchy. + * from the counts kept for it in the coverage, with the `level` asked. */ export const getOperandResult = ({ element, sources }, counts) => combineSources( @@ -179,8 +166,6 @@ export const getOperandResult = ({ element, sources }, counts) => ? AT_ANY_ORG_UNIT : getSourceResult({ sourceCounts: counts.sources?.[getSourceId(source)], - assignedOrgUnitCounts: - counts.assignedOrgUnitCounts?.[getSourceId(source)], aggregationLevels: element?.aggregationLevels, totals: counts.totals ?? {}, level: counts.level, diff --git a/src/modules/dataItemProfile/compatibility/periodSourceResults.js b/src/modules/dataItemProfile/compatibility/periodSourceResults.js index 78a1113db..2a33509ed 100644 --- a/src/modules/dataItemProfile/compatibility/periodSourceResults.js +++ b/src/modules/dataItemProfile/compatibility/periodSourceResults.js @@ -1,7 +1,6 @@ import { COMPATIBILITY_FULL, COMPATIBILITY_NONE, - COMPATIBILITY_PARTIAL, PERIOD_AGGREGATION_AVERAGE, PERIOD_AGGREGATION_FIRST, PERIOD_AGGREGATION_LAST, @@ -19,10 +18,10 @@ import { canAggregateInto, getFrequencyOrder } from '../periods/periodTypes.js' import { getSourcePeriodType } from '../profile/assignedPeriodTypes.js' import { isProgramSource } from '../sources.js' import { + combineAddedUpResults, combineResults, createResult, getUnknownResult, - unionOfReasons, } from './combineResults.js' /* The period rules for one source and one query ({ periodType, dates, years, @@ -139,29 +138,12 @@ export const getSourceResult = (source, query) => { return combineResults(results) } -// The values of one element over its data sets add up: some missing is partial -const combineSources = (results) => { - const statuses = results.map(({ status }) => status) - const reasons = unionOfReasons(results) - - if (statuses.every((status) => status === COMPATIBILITY_NONE)) { - return createResult(COMPATIBILITY_NONE, reasons) - } - - return createResult( - statuses.some((status) => status === COMPATIBILITY_NONE) - ? COMPATIBILITY_PARTIAL - : COMPATIBILITY_FULL, - reasons - ) -} - export const getOperandResult = ( { element, reportingRate, sources }, query ) => { if (element) { - return combineSources( + return combineAddedUpResults( sources.map((source) => getElementResult(element, getSourcePeriodType(source), query) ) diff --git a/src/modules/dataItemProfile/constants.js b/src/modules/dataItemProfile/constants.js index f19df9406..1c8a07a72 100644 --- a/src/modules/dataItemProfile/constants.js +++ b/src/modules/dataItemProfile/constants.js @@ -1,10 +1,10 @@ -// Compatibility statuses: compatible with all, some or none of the item's sources +// Compatibility statuses: compatible with all, some or none of the item's sources that apply to the selection export const COMPATIBILITY_FULL = 'full' export const COMPATIBILITY_PARTIAL = 'partial' export const COMPATIBILITY_NONE = 'none' export const COMPATIBILITY_UNKNOWN = 'unknown' -// Most severe first: over several periods, org units or operands, the most severe wins +// Most severe first: where all results are needed (an indicator's two sides), the most severe wins export const COMPATIBILITY_SEVERITY = [ COMPATIBILITY_NONE, COMPATIBILITY_PARTIAL, @@ -24,7 +24,7 @@ export const PROFILE_REASON_NOT_AGGREGATABLE = 'NOT_AGGREGATABLE' /* Why a compatibility status, in the order results list them */ -// An expression whose operand gives no value has none (a ratio without its denominator) +// An operand gives no value: a sum misses it, a side where all are missing has none (a ratio without its denominator) export const REASON_OPERAND_EMPTY = 'OPERAND_EMPTY' // An expression computed from an operand that leaves values out: it can be off either way export const REASON_OPERAND_PARTIAL = 'OPERAND_PARTIAL' @@ -42,16 +42,18 @@ export const REASON_REPEATED_VALUE = 'REPEATED_VALUE' // The value of an earlier data period (period aggregation FIRST or LAST) export const REASON_EARLIER_PERIOD_VALUE = 'EARLIER_PERIOD_VALUE' -// Not assigned there, though assigned at that level elsewhere +// Neither the org unit nor its ancestors are assigned: nothing is there to show export const REASON_NOT_ASSIGNED = 'NOT_ASSIGNED' // Assigned only at higher levels than the one asked: analytics never splits values down export const REASON_ASSIGNED_AT_HIGHER_LEVEL = 'ASSIGNED_AT_HIGHER_LEVEL' // The data element's aggregation levels stop values from reaching the level asked export const REASON_STOPPED_BY_AGGREGATION_LEVEL = 'STOPPED_BY_AGGREGATION_LEVEL' +// No org unit at the level asked under the parent org units, or no group member under them +export const REASON_NO_ORG_UNITS_AT_LEVEL = 'NO_ORG_UNITS_AT_LEVEL' // An org unit group without members: analytics refuses it (E7143), leave it out of the request export const REASON_EMPTY_GROUP = 'EMPTY_GROUP' -// Assigned to only some org units at the deepest level: the others collect nothing +// Assigned to only some org units at the deepest level: the others aren't assigned, so nothing is left out export const REASON_PARTLY_ASSIGNED = 'PARTLY_ASSIGNED' // A program indicator placed by registration or an org unit attribute: values can be at any org unit export const REASON_ANY_ORG_UNIT = 'ANY_ORG_UNIT' @@ -79,6 +81,7 @@ export const REASON_ORDER = [ REASON_NOT_ASSIGNED, REASON_ASSIGNED_AT_HIGHER_LEVEL, REASON_STOPPED_BY_AGGREGATION_LEVEL, + REASON_NO_ORG_UNITS_AT_LEVEL, REASON_EMPTY_GROUP, REASON_PARTLY_ASSIGNED, REASON_ANY_ORG_UNIT, @@ -95,8 +98,14 @@ export const LEFT_OUT_REASONS = new Set([ REASON_STOPPED_BY_AGGREGATION_LEVEL, ]) -// Analytics' item type for reporting rates (ds.REPORTING_RATE), missing from dataTypes.js -export const DIMENSION_TYPE_REPORTING_RATE = 'REPORTING_RATE' +/* How an expression treats missing operand values (dhis2-core + * MissingValueStrategy). Indicators evaluate each side with + * SKIP_IF_ALL_VALUES_MISSING, then need both; expression dimension items + * have their own, SKIP_IF_ALL_VALUES_MISSING by default. NEVER_SKIP counts + * missing values as 0 even when all are. */ +export const SKIP_IF_ANY_VALUE_MISSING = 'SKIP_IF_ANY_VALUE_MISSING' +export const SKIP_IF_ALL_VALUES_MISSING = 'SKIP_IF_ALL_VALUES_MISSING' +export const NEVER_SKIP = 'NEVER_SKIP' /* Expression operands without a dimension item type: constants, org unit * group counts and [days] have no source; an unknown prefix makes the @@ -131,15 +140,7 @@ export const ORG_UNIT_ITEM_TYPE_GROUP = 'GROUP' export const ORG_UNIT_ITEM_TYPE_USER = 'USER' export const ORG_UNIT_ITEM_TYPE_UNKNOWN = 'UNKNOWN' -// How two date ranges relate (comparePeriodRanges) -export const PERIOD_RANGE_SAME = 'same' -export const PERIOD_RANGE_WITHIN = 'within' -export const PERIOD_RANGE_CONTAINS = 'contains' -export const PERIOD_RANGE_OVERLAPS = 'overlaps' -export const PERIOD_RANGE_DISJOINT = 'disjoint' - -/* Server period type names with their frequencyOrder, as /api/periodTypes - * returns them (checked against the test tool's recordings) */ +// Server period type names with their frequencyOrder, as /api/periodTypes returns them export const PERIOD_TYPE_FREQUENCY_ORDER = { Daily: 1, Weekly: 7, diff --git a/src/modules/dataItemProfile/expressionOperands.js b/src/modules/dataItemProfile/expressionOperands.js index 88f89e0b8..b2156a57e 100644 --- a/src/modules/dataItemProfile/expressionOperands.js +++ b/src/modules/dataItemProfile/expressionOperands.js @@ -1,3 +1,4 @@ +import { REPORTING_RATE } from '../dataSets.js' import { DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_INDICATOR, @@ -6,7 +7,6 @@ import { DIMENSION_TYPE_PROGRAM_INDICATOR, } from '../dataTypes.js' import { - DIMENSION_TYPE_REPORTING_RATE, OPERAND_TYPE_CONSTANT, OPERAND_TYPE_DAYS, OPERAND_TYPE_ORG_UNIT_GROUP, @@ -17,7 +17,7 @@ import { * modules/expressions.js reads only the #{} of calculations) */ const OPERAND_TYPE_BY_PREFIX = { '#': DIMENSION_TYPE_DATA_ELEMENT, - R: DIMENSION_TYPE_REPORTING_RATE, + R: REPORTING_RATE, N: DIMENSION_TYPE_INDICATOR, I: DIMENSION_TYPE_PROGRAM_INDICATOR, D: DIMENSION_TYPE_PROGRAM_DATA_ELEMENT, @@ -26,8 +26,8 @@ const OPERAND_TYPE_BY_PREFIX = { OUG: OPERAND_TYPE_ORG_UNIT_GROUP, } -// An operand: `#{de.coc}`, `R{ds.REPORTING_RATE}`, `[days]`… -const OPERAND_REGEX = /(#|[A-Z]+)\{([^}]*)\}|\[days\]/g +// An operand: `#{de.coc}`, `R{ds.REPORTING_RATE}`, `[days]`… (prefixes are 1 to 3 letters) +const OPERAND_REGEX = /(#|[A-Z]{1,3})\{([^}]*)\}|\[days\]/g // One function chained after it: `.periodOffset(-1)`, `.aggregationType(LAST)` const FUNCTION_REGEX = /\.([a-zA-Z]+)\(([^)]*)\)/y @@ -52,11 +52,11 @@ const readFunctions = (expression, position) => { /* The object to fetch for the operand: the data element of `#{de.coc.aoc}`, * the data set of `R{ds.REPORTING_RATE}`, the whole content otherwise */ const getOperandObjectId = (type, content) => - type === DIMENSION_TYPE_DATA_ELEMENT || - type === DIMENSION_TYPE_REPORTING_RATE + type === DIMENSION_TYPE_DATA_ELEMENT || type === REPORTING_RATE ? content.split('.')[0] : content +// One operand found by OPERAND_REGEX: its type, the object behind it, its token and functions const toOperand = (expression, match) => { const [operandToken, prefix, content] = match const { functions, end } = readFunctions( diff --git a/src/modules/dataItemProfile/getDataItemProfile.js b/src/modules/dataItemProfile/getDataItemProfile.js index 4ebbcf794..6293a8158 100644 --- a/src/modules/dataItemProfile/getDataItemProfile.js +++ b/src/modules/dataItemProfile/getDataItemProfile.js @@ -8,6 +8,11 @@ import { collectSources } from './profile/collectSources.js' * * - `sources`: one per data set it is assigned to, with the item's elements * in it (a reporting rate is its data set), and one per program. + * - `expression`, for an indicator or expression dimension item: how its + * operands combine, `{ missingValueStrategy, parts }`, each part an + * `{ operand }` (a key of getItemOperands) or an expression. An indicator + * needs both sides (SKIP_IF_ANY_VALUE_MISSING); each side has a value + * when one of its operands has (SKIP_IF_ALL_VALUES_MISSING). * - `assignedPeriodTypes`: the period types of those data sets * (getAssignedPeriodTypes). * - `assignedOrgUnitLevels`: the org unit levels its data sets and programs @@ -17,9 +22,10 @@ import { collectSources } from './profile/collectSources.js' * never guessed. */ export const getDataItemProfile = (item, metadata = {}) => { - const { sources, reasons } = collectSources(item, metadata) + const { sources, reasons, expression } = collectSources(item, metadata) const profile = { sources, + ...(expression && { expression }), unknown: reasons.length > 0, reasons, assignedPeriodTypes: getAssignedPeriodTypes(sources), diff --git a/src/modules/dataItemProfile/getDataItemProfileCompatibility.js b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js index 8acc86891..091d8447d 100644 --- a/src/modules/dataItemProfile/getDataItemProfileCompatibility.js +++ b/src/modules/dataItemProfile/getDataItemProfileCompatibility.js @@ -1,4 +1,4 @@ -import { combineResults } from './compatibility/combineResults.js' +import { combineAddedUpResults } from './compatibility/combineResults.js' import { getDataItemProfileOrgUnitCompatibility } from './compatibility/getDataItemProfileOrgUnitCompatibility.js' import { getDataItemProfilePeriodCompatibility } from './compatibility/getDataItemProfilePeriodCompatibility.js' import { getSourceId } from './sources.js' @@ -11,7 +11,7 @@ const NO_RESULT = { status: null, reasons: [] } * and org units. * * The status is `full`, `partial`, `none` or `unknown`: compatible with all, - * some or none of the item's data sets and programs that collect for the + * some or none of the item's data sets and programs that apply to the * selection. `reasons` say why, and on a full result whether values are * repeated or taken from an earlier period rather than added up for it. * @@ -20,37 +20,43 @@ const NO_RESULT = { status: null, reasons: [] } * one result per selection item, from `options.orgUnitCoverage` * (fetchOrgUnitCoverage). Given only when org units are asked. * - `sources`: each source over the periods (aligned with `profile.sources`). - * - Overall: the most severe status, with every reason. + * - Overall: the periods and org units add up, as the fixed periods of a + * relative period do: none when all are none, partial when some give + * values and others none, with every reason. * * Periods and org units are judged apart: a data set assigned to some org * units only, at another period type than the others, isn't judged per org * unit. * `options` are passed to the period check (relative period settings, - * calendar, server version). + * relativePeriodDate, calendar, server version). */ export const getDataItemProfileCompatibility = ( profile, { periods = [], orgUnits = [] } = {}, { orgUnitCoverage, ...options } = {} ) => { - const periodResults = getDataItemProfilePeriodCompatibility(profile, { - periods, - ...options, - }) + const periodResults = getDataItemProfilePeriodCompatibility( + profile, + { periods }, + options + ) const orgUnitResults = orgUnits.length - ? getDataItemProfileOrgUnitCompatibility(profile, { - orgUnits, - coverage: orgUnitCoverage, - }) + ? getDataItemProfileOrgUnitCompatibility( + profile, + { orgUnits }, + { orgUnitCoverage } + ) : [] const all = [...periodResults, ...orgUnitResults] return { - ...(all.length ? combineResults(all) : NO_RESULT), + ...(all.length ? combineAddedUpResults(all) : NO_RESULT), sources: profile.sources.map((source, i) => ({ sourceId: getSourceId(source), ...(periodResults.length - ? combineResults(periodResults.map(({ sources }) => sources[i])) + ? combineAddedUpResults( + periodResults.map(({ sources }) => sources[i]) + ) : NO_RESULT), })), periods: periodResults, diff --git a/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js b/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js index 2fe42aeef..bd27cba1c 100644 --- a/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js +++ b/src/modules/dataItemProfile/orgUnits/__tests__/orgUnitSelection.spec.js @@ -15,44 +15,45 @@ describe('parseOrgUnitSelectionItem', () => { ['USER_ORGUNIT_CHILDREN', { type: 'USER', depth: 1 }], ['USER_ORGUNIT_GRANDCHILDREN', { type: 'USER', depth: 2 }], ['not an id', { type: 'UNKNOWN' }], + ['toString', { type: 'UNKNOWN' }], ])('reads %s', (id, expected) => { expect(parseOrgUnitSelectionItem(id)).toEqual({ id, ...expected }) }) }) describe('readOrgUnitSelection', () => { - it('judges units on their own', () => { + it('judges org units on their own', () => { expect(readOrgUnitSelection(['unitAAAAAAA', 'unitBBBBBBB'])).toEqual({ selectionItems: [ { id: 'unitAAAAAAA', type: 'ORG_UNIT' }, { id: 'unitBBBBBBB', type: 'ORG_UNIT' }, ], - parentOrgUnitIds: [], + parentItems: [], }) }) - it('takes the units as boundaries of a level or a group', () => { + it('takes the org units and the user org units as parents of a level or a group', () => { expect( readOrgUnitSelection(['unitAAAAAAA', 'LEVEL-3', 'USER_ORGUNIT']) ).toEqual({ - selectionItems: [ - { id: 'LEVEL-3', type: 'LEVEL', level: 3 }, + selectionItems: [{ id: 'LEVEL-3', type: 'LEVEL', level: 3 }], + parentItems: [ + { id: 'unitAAAAAAA', type: 'ORG_UNIT' }, { id: 'USER_ORGUNIT', type: 'USER', depth: 0 }, ], - parentOrgUnitIds: ['unitAAAAAAA'], }) }) it('reads nothing from no selection', () => { expect(readOrgUnitSelection()).toEqual({ selectionItems: [], - parentOrgUnitIds: [], + parentItems: [], }) }) }) describe('getOrgUnitsToFetch', () => { - it('counts the units of a selection', () => { + it('fetches the org units of a selection', () => { expect(getOrgUnitsToFetch(['unitAAAAAAA', 'LEVEL-2'])).toEqual({ orgUnitIds: ['unitAAAAAAA'], needsRoots: false, @@ -61,12 +62,16 @@ describe('getOrgUnitsToFetch', () => { }) }) - it('counts the roots for a level alone, and the user units', () => { + it('fetches the roots for a level alone, and the user org units', () => { + expect(getOrgUnitsToFetch(['LEVEL-2'])).toMatchObject({ + needsRoots: true, + needsUserOrgUnits: false, + }) expect( getOrgUnitsToFetch(['LEVEL-2', 'USER_ORGUNIT_CHILDREN']) ).toEqual({ orgUnitIds: [], - needsRoots: true, + needsRoots: false, needsUserOrgUnits: true, groupIds: [], }) @@ -95,45 +100,80 @@ describe('getRequestedLevels', () => { levels: [ { id: 'levelNation', level: 1 }, { id: 'levelDistri', level: 2 }, + { id: 'levelChiefd', level: 3 }, + { id: 'levelFacili', level: 4 }, ], orgUnits: { - nation: { id: 'nation', level: 1 }, - district: { id: 'district', level: 2 }, - facility: { id: 'facility', level: 4 }, + nationUnit1: { id: 'nationUnit1', level: 1, path: '/nationUnit1' }, + districtAAA: { + id: 'districtAAA', + level: 2, + path: '/nationUnit1/districtAAA', + }, + facilityAAA: { + id: 'facilityAAA', + level: 4, + path: '/nationUnit1/districtAAA/chiefdomAAA/facilityAAA', + }, }, - rootIds: ['nation'], - userOrgUnitIds: ['district'], + rootIds: ['nationUnit1'], + userOrgUnitIds: ['districtAAA'], groups: { groupAAAAAA: { 2: 3, 3: 0, 4: 5 } }, } - const targets = (id, boundaries = [], coverage = COVERAGE) => - getRequestedLevels(parseOrgUnitSelectionItem(id), boundaries, coverage) + const targets = (id, parents = [], coverage = COVERAGE) => + getRequestedLevels( + parseOrgUnitSelectionItem(id), + parents.map(parseOrgUnitSelectionItem), + coverage + ) + + it('asks an org unit at its own level', () => { + expect(targets('districtAAA')).toEqual([ + { countsKey: 'districtAAA', level: 2 }, + ]) + }) + + it('asks a level under each parent that holds it', () => { + expect(targets('LEVEL-3', ['nationUnit1', 'facilityAAA'])).toEqual([ + { countsKey: 'nationUnit1', level: 3 }, + ]) + }) + + it('asks a level once under a parent given twice, or within another', () => { + expect( + targets('LEVEL-4', ['districtAAA', 'districtAAA', 'facilityAAA']) + ).toEqual([{ countsKey: 'districtAAA', level: 4 }]) + expect( + targets('LEVEL-4', ['USER_ORGUNIT', 'USER_ORGUNIT_CHILDREN']) + ).toEqual([{ countsKey: 'districtAAA', level: 4 }]) + }) - it('asks a unit at its own level', () => { - expect(targets('district')).toBeNull() + it('keeps a parent within another that holds fewer levels', () => { expect( - getRequestedLevels( - { id: 'district', type: 'ORG_UNIT' }, - [], - COVERAGE - ) - ).toEqual([{ countsKey: 'district', level: 2 }]) + targets('LEVEL-3', ['USER_ORGUNIT_GRANDCHILDREN', 'districtAAA']) + ).toEqual([{ countsKey: 'districtAAA', level: 3 }]) }) - it('asks a level under each boundary that is above it', () => { - expect(targets('LEVEL-3', ['nation', 'facility'])).toEqual([ - { countsKey: 'nation', level: 3 }, + it('asks a level under the user org units, below the depth of the user item', () => { + expect(targets('LEVEL-3', ['USER_ORGUNIT_CHILDREN'])).toEqual([ + { countsKey: 'districtAAA', level: 3 }, ]) + expect(targets('LEVEL-2', ['USER_ORGUNIT_CHILDREN'])).toEqual([]) }) - it('asks a level under the roots without boundaries, by number or id', () => { + it('asks nothing for a level deeper than the hierarchy', () => { + expect(targets('LEVEL-7', ['nationUnit1'])).toEqual([]) + }) + + it('asks a level under the roots without parents, by number or id', () => { expect(targets('LEVEL-levelDistri')).toEqual([ - { countsKey: 'nation', level: 2 }, + { countsKey: 'nationUnit1', level: 2 }, ]) }) - it('asks the user units at their level plus the depth', () => { + it('asks the user org units at their level plus the depth', () => { expect(targets('USER_ORGUNIT_GRANDCHILDREN')).toEqual([ - { countsKey: 'district', level: 4 }, + { countsKey: 'districtAAA', level: 4 }, ]) }) @@ -144,29 +184,31 @@ describe('getRequestedLevels', () => { ]) }) - it('asks a group under each boundary at or above its members', () => { + it('asks a group under each parent at or above its members, inside no other', () => { expect( - targets('OU_GROUP-groupAAAAAA', ['district', 'facility']) + targets('OU_GROUP-groupAAAAAA', ['districtAAA', 'facilityAAA']) ).toEqual([ { - countsKey: 'groupAAAAAA:2:district', + countsKey: 'groupAAAAAA:2:districtAAA', level: 2, groupId: 'groupAAAAAA', }, { - countsKey: 'groupAAAAAA:4:district', + countsKey: 'groupAAAAAA:4:districtAAA', level: 4, groupId: 'groupAAAAAA', }, + ]) + expect(targets('OU_GROUP-groupAAAAAA', ['facilityAAA'])).toEqual([ { - countsKey: 'groupAAAAAA:4:facility', + countsKey: 'groupAAAAAA:4:facilityAAA', level: 4, groupId: 'groupAAAAAA', }, ]) }) - it('cannot tell for a group, an unknown level, or units not loaded', () => { + it('cannot tell for a group, an unknown level, or org units not loaded', () => { expect(targets('OU_GROUP-notLoadedGr')).toBeNull() expect(targets('OU_GROUP-groupAAAAAA', ['notLoadedUn'])).toBeNull() expect(targets('LEVEL-unknownLvl')).toBeNull() diff --git a/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js index 6496322c1..774d5db8e 100644 --- a/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js +++ b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js @@ -18,20 +18,20 @@ import { * them, not a data item. */ // How many levels below the user's org units each user item reaches -const USER_ITEM_DEPTHS = { - [USER_ORG_UNIT]: 0, - [USER_ORG_UNIT_CHILDREN]: 1, - [USER_ORG_UNIT_GRANDCHILDREN]: 2, -} +const USER_ITEM_DEPTHS = new Map([ + [USER_ORG_UNIT, 0], + [USER_ORG_UNIT_CHILDREN, 1], + [USER_ORG_UNIT_GRANDCHILDREN, 2], +]) const UID = /^[a-zA-Z][a-zA-Z0-9]{10}$/ export const parseOrgUnitSelectionItem = (id) => { - if (id in USER_ITEM_DEPTHS) { + if (USER_ITEM_DEPTHS.has(id)) { return { id, type: ORG_UNIT_ITEM_TYPE_USER, - depth: USER_ITEM_DEPTHS[id], + depth: USER_ITEM_DEPTHS.get(id), } } @@ -74,22 +74,23 @@ const isLevelOrGroup = isOfType( /** * A selection as analytics reads it: with a level or a group in it, the org - * units are parents (districts in Bo, a group's members in Bo), not items of - * their own. Gives the `selectionItems` to judge and the `parentOrgUnitIds`. + * units and the user's org units are parents (districts in Bo, a group's + * members in the user's district), not items of their own. Gives the + * `selectionItems` to judge and the `parentItems`. */ export const readOrgUnitSelection = (orgUnits = []) => { const parsed = orgUnits.map(parseOrgUnitSelectionItem) - const hasParents = parsed.some(isLevelOrGroup) - const isOrgUnit = isOfType(ORG_UNIT_ITEM_TYPE_ORG_UNIT) + const isParent = isOfType( + ORG_UNIT_ITEM_TYPE_ORG_UNIT, + ORG_UNIT_ITEM_TYPE_USER + ) - return { - selectionItems: hasParents - ? parsed.filter((item) => !isOrgUnit(item)) - : parsed, - parentOrgUnitIds: hasParents - ? parsed.filter(isOrgUnit).map(({ id }) => id) - : [], - } + return parsed.some(isLevelOrGroup) + ? { + selectionItems: parsed.filter((item) => !isParent(item)), + parentItems: parsed.filter(isParent), + } + : { selectionItems: parsed, parentItems: [] } } /** @@ -104,7 +105,8 @@ export const getOrgUnitsToFetch = (orgUnits = []) => { orgUnitIds: ofType(ORG_UNIT_ITEM_TYPE_ORG_UNIT).map(({ id }) => id), needsRoots: ofType(ORG_UNIT_ITEM_TYPE_LEVEL).length > 0 && - !ofType(ORG_UNIT_ITEM_TYPE_ORG_UNIT).length, + !ofType(ORG_UNIT_ITEM_TYPE_ORG_UNIT).length && + !ofType(ORG_UNIT_ITEM_TYPE_USER).length, needsUserOrgUnits: ofType(ORG_UNIT_ITEM_TYPE_USER).length > 0, groupIds: [ ...new Set( @@ -114,6 +116,57 @@ export const getOrgUnitsToFetch = (orgUnits = []) => { } } +/** + * The org units a level or a group is kept under, each with the shallowest + * level it holds (`minLevel`): an org unit at its own level and below; the + * user's org units, below their level plus the item's depth (the children of + * the user's org units hold levels from one below theirs). Without parents, + * the roots. A parent given twice, or within another that holds its levels, + * counts once. Null when one isn't loaded. + */ +export const resolveParents = (parentItems, coverage) => { + const { orgUnits, rootIds = [], userOrgUnitIds } = coverage + + if (!parentItems.length) { + return rootIds.map((id) => ({ orgUnitId: id, minLevel: 1 })) + } + + const parents = parentItems.flatMap(({ type, id, depth }) => + type === ORG_UNIT_ITEM_TYPE_USER + ? (userOrgUnitIds ?? [undefined]).map((userId) => ({ + orgUnitId: userId, + minLevel: (orgUnits[userId]?.level ?? 0) + depth, + })) + : [{ orgUnitId: id, minLevel: orgUnits[id]?.level }] + ) + + if (!parents.every(({ orgUnitId }) => orgUnits[orgUnitId])) { + return null + } + + // A parent given twice counts once, from the shallowest level either holds + const distinct = [ + ...parents + .reduce((byId, parent) => { + const known = byId.get(parent.orgUnitId) + + return known && known.minLevel <= parent.minLevel + ? byId + : byId.set(parent.orgUnitId, parent) + }, new Map()) + .values(), + ] + // Analytics takes the org units under all parents once each + const isWithin = (parent, other) => + other !== parent && + orgUnits[parent.orgUnitId].path.includes(`/${other.orgUnitId}/`) && + other.minLevel <= parent.minLevel + + return distinct.filter( + (parent) => !distinct.some((other) => isWithin(parent, other)) + ) +} + // Where the counts of a group's members at one level, under one parent, are kept export const getGroupCountsKey = (groupId, level, parentOrgUnitId) => `${groupId}:${level}:${parentOrgUnitId ?? ''}` @@ -123,17 +176,12 @@ const getLevelNumber = (level, levels) => ? level : levels.find(({ id }) => id === level)?.level ?? null -/* A group's members at each level they are at, under each parent at or - * above them: analytics keeps the members inside the parents */ -const getGroupRequestedLevels = ( - groupId, - parentOrgUnitIds, - { orgUnits, groups } -) => { +/* A group's members at each level they are at, under each parent that holds + * that level (or anywhere, without parents) */ +const getGroupRequestedLevels = (groupId, parents, groups) => { const membersByLevel = groups?.[groupId] - const parents = parentOrgUnitIds.length ? parentOrgUnitIds : [null] - if (!membersByLevel || parentOrgUnitIds.some((id) => !orgUnits[id])) { + if (!membersByLevel) { return null } @@ -141,12 +189,10 @@ const getGroupRequestedLevels = ( .map(Number) .filter((level) => membersByLevel[level] > 0) .flatMap((level) => - parents - .filter( - (parentId) => !parentId || orgUnits[parentId].level <= level - ) - .map((parentId) => ({ - countsKey: getGroupCountsKey(groupId, level, parentId), + (parents ?? [{ orgUnitId: null, minLevel: 1 }]) + .filter(({ minLevel }) => minLevel <= level) + .map(({ orgUnitId }) => ({ + countsKey: getGroupCountsKey(groupId, level, orgUnitId), level, groupId, })) @@ -156,17 +202,14 @@ const getGroupRequestedLevels = ( /** * The levels analytics aggregates to for a selection item, each with where * its counts are kept in the coverage (fetchOrgUnitCoverage): an org unit at - * its own level; LEVEL-n at level n under each parent (or under the roots); - * the user's org units at their level plus the item's depth; a group at each - * level its members are at, under each parent. Null when it can't be told: - * an unknown id or level, or an org unit or group that isn't loaded. + * its own level; LEVEL-n at level n under each parent that holds it (or under + * the roots); the user's org units at their level plus the item's depth; a + * group at each level its members are at, under each parent. An empty list + * when no parent holds the level. Null when it can't be told: an unknown id + * or level, or an org unit or group that isn't loaded. */ -export const getRequestedLevels = ( - selectionItem, - parentOrgUnitIds, - coverage -) => { - const { orgUnits, rootIds = [], userOrgUnitIds, levels = [] } = coverage +export const getRequestedLevels = (selectionItem, parentItems, coverage) => { + const { orgUnits, userOrgUnitIds, levels = [] } = coverage const atOwnLevel = (orgUnitId, depth = 0) => orgUnits[orgUnitId] && { countsKey: orgUnitId, @@ -181,15 +224,20 @@ export const getRequestedLevels = ( } case ORG_UNIT_ITEM_TYPE_LEVEL: { const level = getLevelNumber(selectionItem.level, levels) - const parents = parentOrgUnitIds.length ? parentOrgUnitIds : rootIds + const parents = resolveParents(parentItems, coverage) - if (!level || parents.some((id) => !orgUnits[id])) { + if (!level || !parents) { return null } + // A level deeper than the hierarchy holds no org unit + if (levels.length && level > levels[levels.length - 1].level) { + return [] + } + return parents - .filter((id) => orgUnits[id].level <= level) - .map((id) => ({ countsKey: id, level })) + .filter(({ minLevel }) => minLevel <= level) + .map(({ orgUnitId }) => ({ countsKey: orgUnitId, level })) } case ORG_UNIT_ITEM_TYPE_USER: { const requested = (userOrgUnitIds ?? []).map((id) => @@ -200,12 +248,19 @@ export const getRequestedLevels = ( ? requested : null } - case ORG_UNIT_ITEM_TYPE_GROUP: - return getGroupRequestedLevels( - selectionItem.groupId, - parentOrgUnitIds, - coverage - ) + case ORG_UNIT_ITEM_TYPE_GROUP: { + const parents = parentItems.length + ? resolveParents(parentItems, coverage) + : undefined + + return parents === null + ? null + : getGroupRequestedLevels( + selectionItem.groupId, + parents, + coverage.groups + ) + } default: return null } diff --git a/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js b/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js index 360f7503c..cc44a7aa8 100644 --- a/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/calendarDates.spec.js @@ -4,13 +4,14 @@ import { isIsoCalendar, pad, shiftDate, - toIsoDate, + fromIsoDate, } from '../calendarDates.js' describe('calendarDates', () => { it('needs no conversion for the ISO calendars only', () => { expect(isIsoCalendar()).toBe(true) expect(isIsoCalendar('iso8601')).toBe(true) + expect(isIsoCalendar('gregorian')).toBe(true) expect(isIsoCalendar('nepali')).toBe(false) }) @@ -28,19 +29,20 @@ describe('calendarDates', () => { it('shifts a date of another calendar in that calendar', () => { expect(shiftDate('2081-01-03', 1, 'nepali')).toBe('2081-01-04') - expect(toIsoDate(shiftDate('2081-01-03', 1, 'nepali'), 'nepali')).toBe( - '2024-04-16' - ) + expect(fromIsoDate('2024-04-16', 'nepali')).toBe('2081-01-04') }) }) -describe('toIsoDate', () => { - it('keeps ISO dates', () => { - expect(toIsoDate('2025-01-06')).toBe('2025-01-06') - expect(toIsoDate('2025-01-06', 'iso8601')).toBe('2025-01-06') +describe('fromIsoDate', () => { + it('keeps ISO dates, and converts them to other calendars', () => { + expect(fromIsoDate('2025-01-06')).toBe('2025-01-06') + expect(fromIsoDate('2024-04-15', 'nepali')).toBe('2081-01-03') }) +}) - it('converts dates of other calendars', () => { - expect(toIsoDate('2081-01-03', 'nepali')).toBe('2024-04-15') +describe('a conversion that fails', () => { + it('gives null, never throws', () => { + expect(fromIsoDate('2024-04-15', 'noSuchCalendar')).toBeNull() + expect(shiftDate('2081-01-03', 1, 'noSuchCalendar')).toBeNull() }) }) diff --git a/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js index 10da7babd..11a8bf48a 100644 --- a/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js @@ -43,6 +43,23 @@ describe('getFirstOrLastValuePeriod', () => { ).toMatchObject({ id: '202509' }) }) + it('skips a gap year in the request, for weekly and monthly data', () => { + expect( + sourceOf({ + periodType: 'Weekly', + period: '20240101', + years: [2022, 2024], + }) + ).toMatchObject({ id: '2022W52' }) + expect( + sourceOf({ + periodType: 'Monthly', + period: '20240101', + years: [2020, 2024], + }) + ).toMatchObject({ id: '202012' }) + }) + it('counts only data periods of the years touched, by their id', () => { expect( sourceOf({ periodType: 'Monthly', period: '20250101' }) diff --git a/src/modules/dataItemProfile/periods/__tests__/memoize.spec.js b/src/modules/dataItemProfile/periods/__tests__/memoize.spec.js new file mode 100644 index 000000000..d8ae8bfdb --- /dev/null +++ b/src/modules/dataItemProfile/periods/__tests__/memoize.spec.js @@ -0,0 +1,34 @@ +import { memoize } from '../memoize.js' + +describe('memoize', () => { + it('computes once per arguments', () => { + const double = jest.fn((a, b) => [a, b]) + const memoized = memoize(double) + + expect(memoized(1, 2)).toBe(memoized(1, 2)) + expect(memoized(2, 1)).toEqual([2, 1]) + expect(double).toHaveBeenCalledTimes(2) + }) + + it('starts over when full', () => { + const identity = jest.fn((a) => ({ a })) + const memoized = memoize(identity, { maxSize: 2 }) + + memoized(1) + memoized(2) + memoized(3) + memoized(2) + + expect(identity).toHaveBeenCalledTimes(4) + }) + + it('takes a key of its own', () => { + const read = jest.fn(({ id }) => id) + const memoized = memoize(read, { getKey: ({ id }) => id }) + + memoized({ id: 'a', other: 1 }) + memoized({ id: 'a', other: 2 }) + + expect(read).toHaveBeenCalledTimes(1) + }) +}) diff --git a/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js b/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js index acf02812c..c3e87cb30 100644 --- a/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/periodRanges.spec.js @@ -1,5 +1,6 @@ import { - comparePeriodRanges, + getNextPeriod, + getPreviousPeriod, getCoveringPeriodRange, getFixedPeriodOfTypeByDate, getPeriodDates, @@ -54,24 +55,6 @@ describe('getPeriodDates', () => { }) }) -describe('comparePeriodRanges', () => { - const jan = { startDate: '2025-01-01', endDate: '2025-01-31' } - const q1 = { startDate: '2025-01-01', endDate: '2025-03-31' } - const week1 = { startDate: '2024-12-30', endDate: '2025-01-05' } - const feb = { startDate: '2025-02-01', endDate: '2025-02-28' } - - it.each([ - [jan, jan, 'same'], - [jan, q1, 'within'], - [q1, jan, 'contains'], - [week1, jan, 'overlaps'], - [jan, feb, 'disjoint'], - [feb, jan, 'disjoint'], - ])('%j to %j: %s', (a, b, expected) => { - expect(comparePeriodRanges(a, b)).toBe(expected) - }) -}) - describe('getFixedPeriodOfTypeByDate', () => { it('finds the period of a type that holds a date', () => { expect( @@ -107,6 +90,7 @@ describe('getFixedPeriodOfTypeByDate', () => { it('is null for a date it cannot read', () => { expect(getFixedPeriodOfTypeByDate('Monthly', 'not a date')).toBeNull() + expect(getFixedPeriodOfTypeByDate('Monthly', null)).toBeNull() }) }) @@ -150,3 +134,26 @@ describe('isAlignedWithPeriodType', () => { ).toBe(expected) }) }) + +describe('getPreviousPeriod and getNextPeriod', () => { + it('step to the adjacent period of the same type', () => { + const january = getFixedPeriodOfTypeByDate('Monthly', '2025-01-15') + + expect(getPreviousPeriod('Monthly', january).id).toBe('202412') + expect(getNextPeriod('Monthly', january).id).toBe('202502') + }) + + it('step across November periods, which the library dates itself', () => { + const quarter = getFixedPeriodOfTypeByDate('QuarterlyNov', '2025-01-15') + + expect(getNextPeriod('QuarterlyNov', quarter).id).toBe('2025NovQ2') + }) + + it('are null when the date of a calendar cannot be converted', () => { + const period = { startDate: '2081-01-01', endDate: '2081-01-31' } + + expect( + getPreviousPeriod('Monthly', period, 'noSuchCalendar') + ).toBeNull() + }) +}) diff --git a/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js b/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js index 3506549bf..67951e601 100644 --- a/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/periodTypes.spec.js @@ -1,7 +1,6 @@ import { PERIOD_TYPES } from '../../constants.js' import { canAggregateInto, - compareByFrequency, getCandidatePeriodTypes, getPeriodTypeOfPeriodId, getRelativePeriodTypeOptions, @@ -179,11 +178,3 @@ describe('canAggregateInto', () => { expect(canAggregateInto('Monthly', undefined)).toBeNull() }) }) - -describe('compareByFrequency', () => { - it('orders by frequency', () => { - expect(compareByFrequency('Weekly', 'Monthly')).toBeLessThan(0) - expect(compareByFrequency('Yearly', 'FinancialApril')).toBe(0) - expect(compareByFrequency('TwoYearly', 'Yearly')).toBeGreaterThan(0) - }) -}) diff --git a/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js b/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js new file mode 100644 index 000000000..25acd38d0 --- /dev/null +++ b/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js @@ -0,0 +1,101 @@ +import { getRelativePeriodFixedPeriods } from '../relativePeriodRanges.js' + +const ON_15_JUNE_2025 = { relativePeriodDate: '2025-06-15' } +const idsOf = (periodId, periodType, options = ON_15_JUNE_2025) => + getRelativePeriodFixedPeriods(periodId, periodType, options)?.map( + ({ id }) => id + ) + +describe('getRelativePeriodFixedPeriods', () => { + it('resolves this and last periods from the date', () => { + expect(idsOf('THIS_MONTH', 'Monthly')).toEqual(['202506']) + expect(idsOf('LAST_MONTH', 'Monthly')).toEqual(['202505']) + expect(idsOf('LAST_YEAR', 'Yearly')).toEqual(['2024']) + }) + + it('resolves the periods before this one, oldest first', () => { + expect(idsOf('LAST_3_MONTHS', 'Monthly')).toEqual([ + '202503', + '202504', + '202505', + ]) + expect(idsOf('LAST_12_MONTHS', 'Monthly')).toHaveLength(12) + expect(idsOf('LAST_7_DAYS', 'Daily')).toEqual([ + '20250608', + '20250609', + '20250610', + '20250611', + '20250612', + '20250613', + '20250614', + ]) + }) + + it('resolves the periods of this year, all of them', () => { + expect(idsOf('MONTHS_THIS_YEAR', 'Monthly')).toEqual([ + '202501', + '202502', + '202503', + '202504', + '202505', + '202506', + '202507', + '202508', + '202509', + '202510', + '202511', + '202512', + ]) + expect(idsOf('QUARTERS_THIS_YEAR', 'Quarterly')).toEqual([ + '2025Q1', + '2025Q2', + '2025Q3', + '2025Q4', + ]) + }) + + it('takes the weeks that belong to this year', () => { + const weeks = idsOf('WEEKS_THIS_YEAR', 'Weekly') + + expect(weeks[0]).toBe('2025W1') + expect(weeks[weeks.length - 1]).toBe('2025W52') + }) + + it('resolves the type a setting gives', () => { + expect(idsOf('THIS_WEEK', 'WeeklyWednesday')).toEqual(['2025WedW24']) + expect(idsOf('THIS_FINANCIAL_YEAR', 'FinancialApril')).toEqual([ + '2025April', + ]) + }) + + it('resolves dates of other calendars', () => { + expect( + idsOf('THIS_MONTH', 'Monthly', { + calendar: 'nepali', + relativePeriodDate: '2025-06-15', + }) + ).toEqual(['208202']) + }) + + it('resolves from today by default', () => { + expect(idsOf('THIS_YEAR', 'Yearly', {})).toEqual([ + String(new Date().getFullYear()), + ]) + }) + + it('cannot tell for an unknown relative period or period type', () => { + expect(idsOf('LAST_7_DECADES', 'Yearly')).toBeUndefined() + expect(idsOf('THIS_MONTH', 'Hourly')).toBeUndefined() + }) +}) + +describe('getRelativePeriodFixedPeriods, in a calendar it cannot convert to', () => { + it('cannot tell', () => { + expect( + idsOf('THIS_MONTH', 'Monthly', { + calendar: 'noSuchCalendar', + relativePeriodDate: '2025-06-15', + }) + ).toBeUndefined() + }) +}) diff --git a/src/modules/dataItemProfile/periods/calendarDates.js b/src/modules/dataItemProfile/periods/calendarDates.js index 97a4a3857..d498a6880 100644 --- a/src/modules/dataItemProfile/periods/calendarDates.js +++ b/src/modules/dataItemProfile/periods/calendarDates.js @@ -5,8 +5,9 @@ import { /* Dates are YYYY-MM-DD strings in the server's calendar. Other calendars are * supported: their dates are converted to ISO for analytics and back for - * multi-calendar-dates. These two need no conversion. */ -const ISO_CALENDARS = new Set(['gregory', 'iso8601']) + * multi-calendar-dates. These need no conversion (gregorian is the id DHIS2 + * gives the gregorian calendar). */ +const ISO_CALENDARS = new Set(['gregory', 'gregorian', 'iso8601']) export const isIsoCalendar = (calendar = 'gregory') => ISO_CALENDARS.has(calendar) @@ -25,23 +26,40 @@ const shiftIsoDate = (isoDate, days) => { return date.toISOString().slice(0, 10) } -// The date `days` later (or earlier, when negative), in the same calendar +// A conversion multi-calendar-dates can't make (an era it doesn't match) gives null +const convertOrNull = (convert) => { + try { + return convert() + } catch { + return null + } +} + +// A date of the ISO calendar (YYYY-MM-DD) in the given calendar, or null +export const fromIsoDate = (isoDate, calendar = 'gregory') => { + if (isIsoCalendar(calendar)) { + return isoDate + } + + return convertOrNull(() => { + const { year, eraYear, month, day } = convertFromIso8601( + isoDate, + calendar + ) + + return formatDate({ year: eraYear ?? year, month, day }) + }) +} + +// The date `days` later (or earlier, when negative), in the same calendar, or null export const shiftDate = (date, days, calendar = 'gregory') => { if (isIsoCalendar(calendar)) { return shiftIsoDate(date, days) } - const shifted = shiftIsoDate( - formatDate(convertToIso8601(date, calendar)), - days + const isoDate = convertOrNull(() => + formatDate(convertToIso8601(date, calendar)) ) - const { year, eraYear, month, day } = convertFromIso8601(shifted, calendar) - return formatDate({ year: eraYear ?? year, month, day }) + return isoDate && fromIsoDate(shiftIsoDate(isoDate, days), calendar) } - -// Analytics takes ISO dates -export const toIsoDate = (date, calendar = 'gregory') => - !date || isIsoCalendar(calendar) - ? date - : formatDate(convertToIso8601(date, calendar)) diff --git a/src/modules/dataItemProfile/periods/firstLastValues.js b/src/modules/dataItemProfile/periods/firstLastValues.js index cbbd566ba..5c2cc0778 100644 --- a/src/modules/dataItemProfile/periods/firstLastValues.js +++ b/src/modules/dataItemProfile/periods/firstLastValues.js @@ -1,7 +1,12 @@ import { PERIOD_AGGREGATION_FIRST } from '../constants.js' import { getYear, pad, shiftDate } from './calendarDates.js' +import { memoize } from './memoize.js' import { getPeriodIdYear } from './multiCalendarPatches.js' -import { getFixedPeriodOfTypeByDate } from './periodRanges.js' +import { + getFixedPeriodOfTypeByDate, + getNextPeriod, + getPreviousPeriod, +} from './periodRanges.js' /* How analytics answers FIRST and LAST data (checked by the test tool on 2.40 * to 2.44): a data period counts when it ended by the end of the period asked @@ -10,7 +15,7 @@ import { getFixedPeriodOfTypeByDate } from './periodRanges.js' * gives no value. So FIRST in July gives January's value, and LAST on * 1 January gives nothing. */ -// Enough to cross the years between two in a request, one period at a time at most +// Enough to reach the last periods of the next year in the request, after a jump const MAX_STEPS = 20 const getLastPeriodEndingBy = (periodType, date, calendar) => { @@ -20,11 +25,7 @@ const getLastPeriodEndingBy = (periodType, date, calendar) => { return holding } - return getFixedPeriodOfTypeByDate( - periodType, - shiftDate(holding.startDate, -1, calendar), - calendar - ) + return getPreviousPeriod(periodType, holding, calendar) } const getLatestCounting = ({ periodType, dates, years, calendar }) => { @@ -49,9 +50,16 @@ const getLatestCounting = ({ periodType, dates, years, calendar }) => { return null } - const yearEnd = `${pad(Math.max(...lowerYears) + 1, 4)}-12-31` + /* Jump to just after the highest year left: its last periods end by + * then (a week of that year can end in early January) */ + const afterYear = `${pad(Math.max(...lowerYears) + 1, 4)}-01-07` const before = shiftDate(period.startDate, -1, calendar) - date = yearEnd < before ? yearEnd : before + + if (!before) { + return null + } + + date = afterYear < before ? afterYear : before } return null @@ -70,11 +78,7 @@ const getEarliestCounting = ({ periodType, dates, years, calendar }) => { return period.endDate <= dates.endDate ? period : null } - period = getFixedPeriodOfTypeByDate( - periodType, - shiftDate(period.endDate, 1, calendar), - calendar - ) + period = getNextPeriod(periodType, period, calendar) } return null @@ -85,23 +89,46 @@ const getEarliestCounting = ({ periodType, dates, years, calendar }) => { * `periodType`, in a period with `dates`, when the request touches the * calendar `years`; null when there is none. */ +const findFirstOrLastValuePeriod = memoize( + ({ periodAggregationType, ...query }) => + periodAggregationType === PERIOD_AGGREGATION_FIRST + ? getEarliestCounting(query) + : getLatestCounting(query), + { + getKey: ({ + periodAggregationType, + periodType, + dates, + years, + calendar, + }) => + [ + periodAggregationType, + periodType, + dates.startDate, + dates.endDate, + years.join(','), + calendar, + ].join('|'), + } +) + export const getFirstOrLastValuePeriod = ({ periodAggregationType, periodType, dates, years, calendar = 'gregory', -}) => { - if (!years.length) { - return null - } - - const query = { periodType, dates, years, calendar } - - return periodAggregationType === PERIOD_AGGREGATION_FIRST - ? getEarliestCounting(query) - : getLatestCounting(query) -} +}) => + years.length + ? findFirstOrLastValuePeriod({ + periodAggregationType, + periodType, + dates, + years, + calendar, + }) + : null // The calendar years a range's dates fall in export const getYearsTouched = ({ startDate, endDate }) => { diff --git a/src/modules/dataItemProfile/periods/memoize.js b/src/modules/dataItemProfile/periods/memoize.js new file mode 100644 index 000000000..1744af149 --- /dev/null +++ b/src/modules/dataItemProfile/periods/memoize.js @@ -0,0 +1,25 @@ +/* A cache for pure functions with a few small arguments. Period lookups in + * multi-calendar-dates build a whole year of periods each time, about 7 ms: + * the checks make thousands of them. The cache is cleared when it holds + * `maxSize` entries, which bounds memory without tracking use. `getKey` + * turns the arguments into the cache key (joined by default). */ +export const memoize = ( + fn, + { maxSize = 2000, getKey = (...args) => args.join('|') } = {} +) => { + const cache = new Map() + + return (...args) => { + const key = getKey(...args) + + if (!cache.has(key)) { + if (cache.size >= maxSize) { + cache.clear() + } + + cache.set(key, fn(...args)) + } + + return cache.get(key) + } +} diff --git a/src/modules/dataItemProfile/periods/multiCalendarPatches.js b/src/modules/dataItemProfile/periods/multiCalendarPatches.js index 2fb7ccefe..5d5333c92 100644 --- a/src/modules/dataItemProfile/periods/multiCalendarPatches.js +++ b/src/modules/dataItemProfile/periods/multiCalendarPatches.js @@ -7,7 +7,7 @@ import { formatDate, getYear } from './calendarDates.js' * server doesn't know (2024NovemberQ1), and puts 2025Nov a year late. Only the * ISO calendar is patched. */ -const NOVEMBER_PERIOD_ID = /^(\d{4})Nov(?:([QS])([1-4]))?$/ +const NOVEMBER_PERIOD_ID = /^(\d{4})Nov(?:(Q)([1-4])|(S)([12]))?$/ const NOVEMBER_PERIOD_TYPES = { FinancialNov: { idPart: '', months: 12 }, @@ -31,8 +31,13 @@ const toDateString = (date) => }) export const getNovemberPeriodDates = (periodId) => { - const [, year, idPart, number] = periodId.match(NOVEMBER_PERIOD_ID) - const months = { Q: 3, S: 6 }[idPart] ?? 12 + const [, year, quarter, quarterNumber, sixMonths, sixMonthsNumber] = + periodId.match(NOVEMBER_PERIOD_ID) + const idPart = quarter ?? sixMonths ?? '' + const number = quarterNumber ?? sixMonthsNumber + const { months } = Object.values(NOVEMBER_PERIOD_TYPES).find( + (type) => type.idPart === idPart + ) const firstMonth = 10 + (Number(number ?? 1) - 1) * months const start = new Date(Date.UTC(Number(year) - 1, firstMonth, 1)) const end = new Date(Date.UTC(Number(year) - 1, firstMonth + months, 0)) diff --git a/src/modules/dataItemProfile/periods/periodRanges.js b/src/modules/dataItemProfile/periods/periodRanges.js index 3e0c949e3..0de87660c 100644 --- a/src/modules/dataItemProfile/periods/periodRanges.js +++ b/src/modules/dataItemProfile/periods/periodRanges.js @@ -1,32 +1,63 @@ import { createFixedPeriodFromPeriodId, - getFixedPeriodByDate, + generateFixedPeriods, } from '@dhis2/multi-calendar-dates' import { SERVER_PT_TO_MULTI_CALENDAR_PT } from '../../../components/PeriodDimension/utils/enabledPeriodTypes.js' -import { - PERIOD_RANGE_CONTAINS, - PERIOD_RANGE_DISJOINT, - PERIOD_RANGE_OVERLAPS, - PERIOD_RANGE_SAME, - PERIOD_RANGE_WITHIN, -} from '../constants.js' -import { isIsoCalendar } from './calendarDates.js' +import { getYear, isIsoCalendar, shiftDate } from './calendarDates.js' +import { memoize } from './memoize.js' import { getNovemberPeriodByDate, getNovemberPeriodDates, isNovemberPeriodId, isNovemberPeriodType, } from './multiCalendarPatches.js' +import { getPeriodTypeOfPeriodId } from './periodTypes.js' /* A period range is { startDate, endDate }, YYYY-MM-DD strings in one * calendar, so they compare as strings */ -// A fixed period's range, or null for an id that can't be read -export const getPeriodDates = (periodId, calendar = 'gregory') => { +const isYearLongType = (libraryPeriodType) => + libraryPeriodType === 'YEARLY' || libraryPeriodType.startsWith('FY') + +/* Every period of a type in one year of the calendar (yearly and financial + * types: the one starting that year), built once */ +const getPeriodsOfYear = memoize( + (libraryPeriodType, year, calendar) => { + try { + return generateFixedPeriods({ + year, + periodType: libraryPeriodType, + calendar, + locale: 'en', + ...(isYearLongType(libraryPeriodType) && { yearsCount: 1 }), + }) + } catch { + return [] + } + }, + { maxSize: 500 } +) + +const readPeriodDates = memoize((periodId, calendar) => { if (isNovemberPeriodId(periodId)) { return isIsoCalendar(calendar) ? getNovemberPeriodDates(periodId) : null } + // The id names its year: the period is in that year's list + const libraryPeriodType = + SERVER_PT_TO_MULTI_CALENDAR_PT[getPeriodTypeOfPeriodId(periodId)] + const listed = + libraryPeriodType && + getPeriodsOfYear( + libraryPeriodType, + Number(periodId.slice(0, 4)), + calendar + ).find(({ id }) => id === periodId) + + if (listed) { + return { startDate: listed.startDate, endDate: listed.endDate } + } + try { const { startDate, endDate } = createFixedPeriodFromPeriodId({ periodId, @@ -37,30 +68,31 @@ export const getPeriodDates = (periodId, calendar = 'gregory') => { } catch { return null } -} +}) -/** - * How range `a` relates to range `b`: the same dates, within it, containing - * it, overlapping it, or disjoint. - */ -export const comparePeriodRanges = (a, b) => { - if (a.startDate === b.startDate && a.endDate === b.endDate) { - return PERIOD_RANGE_SAME - } +// A fixed period's range, or null for an id that can't be read +export const getPeriodDates = (periodId, calendar = 'gregory') => + readPeriodDates(periodId, calendar) - if (a.endDate < b.startDate || b.endDate < a.startDate) { - return PERIOD_RANGE_DISJOINT - } +// Weeks and financial years can start in the year before or end in the year after +const findPeriodHolding = (libraryPeriodType, date, calendar) => { + const year = getYear(date) - if (a.startDate >= b.startDate && a.endDate <= b.endDate) { - return PERIOD_RANGE_WITHIN - } + for (const candidateYear of [year, year - 1, year + 1]) { + const period = getPeriodsOfYear( + libraryPeriodType, + candidateYear, + calendar + ).find(({ startDate, endDate }) => startDate <= date && date <= endDate) - if (b.startDate >= a.startDate && b.endDate <= a.endDate) { - return PERIOD_RANGE_CONTAINS + if (period) { + const { id, startDate, endDate } = period + + return { id, startDate, endDate } + } } - return PERIOD_RANGE_OVERLAPS + return null } // The period of `periodType` that holds `date` ({ id, startDate, endDate }), or null @@ -69,6 +101,10 @@ export const getFixedPeriodOfTypeByDate = ( date, calendar = 'gregory' ) => { + if (!date) { + return null + } + if (isNovemberPeriodType(periodType)) { return isIsoCalendar(calendar) ? getNovemberPeriodByDate(periodType, date) @@ -77,21 +113,26 @@ export const getFixedPeriodOfTypeByDate = ( const libraryPeriodType = SERVER_PT_TO_MULTI_CALENDAR_PT[periodType] - if (!libraryPeriodType) { - return null - } - - try { - return getFixedPeriodByDate({ - periodType: libraryPeriodType, - date, - calendar, - }) - } catch { - return null - } + return libraryPeriodType + ? findPeriodHolding(libraryPeriodType, date, calendar) + : null } +// The period of the same type just before or just after `period`, or null +export const getPreviousPeriod = (periodType, period, calendar = 'gregory') => + getFixedPeriodOfTypeByDate( + periodType, + shiftDate(period.startDate, -1, calendar), + calendar + ) + +export const getNextPeriod = (periodType, period, calendar = 'gregory') => + getFixedPeriodOfTypeByDate( + periodType, + shiftDate(period.endDate, 1, calendar), + calendar + ) + /** * The range from the start of the `periodType` period holding the start of * `range`, to the end of the one holding its end: the whole periods of that @@ -129,6 +170,7 @@ export const isAlignedWithPeriodType = ( const covering = getCoveringPeriodRange(range, periodType, calendar) return covering - ? comparePeriodRanges(covering, range) === PERIOD_RANGE_SAME + ? covering.startDate === range.startDate && + covering.endDate === range.endDate : null } diff --git a/src/modules/dataItemProfile/periods/periodTypes.js b/src/modules/dataItemProfile/periods/periodTypes.js index b52fc400a..114fb1c30 100644 --- a/src/modules/dataItemProfile/periods/periodTypes.js +++ b/src/modules/dataItemProfile/periods/periodTypes.js @@ -14,14 +14,11 @@ export const isPeriodType = (value) => PERIOD_TYPE_NAMES.has(value) export const getFrequencyOrder = (periodType) => PERIOD_TYPE_FREQUENCY_ORDER[periodType] -// For sorting: shortest period type first -export const compareByFrequency = (a, b) => - getFrequencyOrder(a) - getFrequencyOrder(b) - +// Shortest first, then in the server's order export const sortPeriodTypes = (periodTypes) => [...periodTypes].sort( (a, b) => - compareByFrequency(a, b) || + getFrequencyOrder(a) - getFrequencyOrder(b) || PERIOD_TYPES.indexOf(a) - PERIOD_TYPES.indexOf(b) ) @@ -75,6 +72,20 @@ const PERIOD_ID_PATTERNS = [ export const getPeriodTypeOfPeriodId = (periodId) => PERIOD_ID_PATTERNS.find(([, regex]) => regex.test(periodId))?.[0] ?? null +let relativePeriodShapes + +/* The type (category), offset and duration of a relative period, or + * undefined: PeriodDimension builds its table, with names, on each call */ +export const getRelativePeriodShape = (periodId) => { + relativePeriodShapes ??= Object.fromEntries( + Object.values(getRelativePeriodsDetails()).map( + ({ id, type, offset, duration }) => [id, { type, offset, duration }] + ) + ) + + return relativePeriodShapes[periodId] +} + const WEEKLY_PERIOD_TYPES = PERIOD_TYPES.filter((type) => type.startsWith('Weekly') ) @@ -130,7 +141,7 @@ export const getCandidatePeriodTypes = (period, options = {}) => { return [fixedPeriodType] } - const category = getRelativePeriodsDetails()[period]?.type + const category = getRelativePeriodShape(period)?.type return category ? getRelativePeriodTypes(category, options) : [] } diff --git a/src/modules/dataItemProfile/periods/relativePeriodRanges.js b/src/modules/dataItemProfile/periods/relativePeriodRanges.js new file mode 100644 index 000000000..2a0c875bf --- /dev/null +++ b/src/modules/dataItemProfile/periods/relativePeriodRanges.js @@ -0,0 +1,121 @@ +import { fromIsoDate, pad } from './calendarDates.js' +import { memoize } from './memoize.js' +import { + getFixedPeriodOfTypeByDate, + getNextPeriod, + getPreviousPeriod, +} from './periodRanges.js' +import { getRelativePeriodShape, isPeriodType } from './periodTypes.js' + +// Today in the user's time zone, as an ISO date +const getLocalIsoDate = () => { + const now = new Date() + + return [ + now.getFullYear(), + pad(now.getMonth() + 1), + pad(now.getDate()), + ].join('-') +} + +// Far more than the longest relative period (LAST_52_WEEKS, LAST_180_DAYS…) +const MAX_PERIODS = 400 + +const stepPeriods = (period, steps, { periodType, calendar }) => { + const step = steps < 0 ? getPreviousPeriod : getNextPeriod + let current = period + + for (let i = 0; current && i < Math.abs(steps); i++) { + current = step(periodType, current, calendar) + } + + return current +} + +// Weeks belong to the year that holds their Thursday: 4 January and 28 December always do +const getYearEdges = (periodType, year) => + periodType.startsWith('Weekly') + ? [`${pad(year, 4)}-01-04`, `${pad(year, 4)}-12-28`] + : [`${pad(year, 4)}-01-01`, `${pad(year, 4)}-12-31`] + +/* The first and last fixed periods of a relative period: from the period + * holding `date`, `offset` periods away for the last one, `duration` periods + * long. The "this year" ones (MONTHS_THIS_YEAR…) cover every period of the + * year. */ +const getEdgePeriods = (periodId, date, { periodType, calendar }) => { + const { offset, duration } = getRelativePeriodShape(periodId) + + if (periodId.endsWith('_THIS_YEAR')) { + return getYearEdges(periodType, Number(date.slice(0, 4))).map((edge) => + getFixedPeriodOfTypeByDate(periodType, edge, calendar) + ) + } + + const current = getFixedPeriodOfTypeByDate(periodType, date, calendar) + const context = { periodType, calendar } + const last = current && stepPeriods(current, offset, context) + const first = last && stepPeriods(last, -(duration - 1), context) + + return [first, last] +} + +const resolveRelativePeriod = memoize( + (periodId, periodType, { calendar, date }) => { + const [first, last] = getEdgePeriods(periodId, date, { + periodType, + calendar, + }) + + if (!first || !last) { + return null + } + + const periods = [first] + + while ( + periods[periods.length - 1].id !== last.id && + periods.length < MAX_PERIODS + ) { + const next = getNextPeriod( + periodType, + periods[periods.length - 1], + calendar + ) + + if (!next) { + return null + } + + periods.push(next) + } + + return periods + }, + { + getKey: (periodId, periodType, { calendar, date }) => + [periodId, periodType, calendar, date].join('|'), + } +) + +/** + * The fixed periods of `periodType` a relative period covers, as analytics + * resolves it on `relativePeriodDate` (an ISO date, today by default), in + * date order; null when it can't be told. + */ +export const getRelativePeriodFixedPeriods = ( + periodId, + periodType, + { calendar = 'gregory', relativePeriodDate } = {} +) => { + const date = fromIsoDate(relativePeriodDate ?? getLocalIsoDate(), calendar) + + if ( + !getRelativePeriodShape(periodId) || + !isPeriodType(periodType) || + !date + ) { + return null + } + + return resolveRelativePeriod(periodId, periodType, { calendar, date }) +} diff --git a/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js b/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js index 1e12b5de1..1ee8d558f 100644 --- a/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js +++ b/src/modules/dataItemProfile/profile/assignedOrgUnitLevels.js @@ -1,6 +1,7 @@ import { canBeAtAnyOrgUnit, getSourceId } from '../sources.js' -const getLevelsWithUnits = (countsByLevel = {}) => +// The levels with at least one org unit, from counts by level +export const getLevelsWithOrgUnits = (countsByLevel = {}) => Object.keys(countsByLevel) .map(Number) .filter((level) => countsByLevel[level] > 0) @@ -15,7 +16,7 @@ export const getAssignedOrgUnitLevels = (sources) => { const levelsBySource = sources .filter(({ assignedOrgUnitCounts }) => assignedOrgUnitCounts) .map(({ assignedOrgUnitCounts }) => - getLevelsWithUnits(assignedOrgUnitCounts) + getLevelsWithOrgUnits(assignedOrgUnitCounts) ) const levels = [...new Set(levelsBySource.flat())].sort((a, b) => b - a) const deepestOfEach = levelsBySource diff --git a/src/modules/dataItemProfile/profile/collectSources.js b/src/modules/dataItemProfile/profile/collectSources.js index 1dcfce3b1..f88a744ef 100644 --- a/src/modules/dataItemProfile/profile/collectSources.js +++ b/src/modules/dataItemProfile/profile/collectSources.js @@ -1,3 +1,4 @@ +import { REPORTING_RATE } from '../../dataSets.js' import { DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_ELEMENT_OPERAND, @@ -11,8 +12,12 @@ import { DIMENSION_TYPE_PROGRAM_INDICATOR, } from '../../dataTypes.js' import { - DIMENSION_TYPE_REPORTING_RATE, NOT_AGGREGATABLE_AGGREGATION_TYPES, + SKIP_IF_ALL_VALUES_MISSING, + SKIP_IF_ANY_VALUE_MISSING, + PERIOD_AGGREGATION_AVERAGE, + PERIOD_AGGREGATION_FIRST, + PERIOD_AGGREGATION_LAST, OPERAND_TYPE_UNKNOWN, PROFILE_REASON_MISSING_METADATA, PROFILE_REASON_MISSING_PROGRAM, @@ -22,6 +27,11 @@ import { PROFILE_REASON_UNSUPPORTED_ITEM_TYPE, } from '../constants.js' import { parseExpressionOperands } from '../expressionOperands.js' +import { + getElementOperandKey, + getProgramOperandKey, + getReportingRateOperandKey, +} from '../sources.js' import { addElementToSource, addReason, @@ -35,12 +45,12 @@ import { /* How each aggregation type aggregates over time, when it differs from the * type itself (dhis2-core AnalyticsAggregationType.fromAggregationType) */ const PERIOD_AGGREGATION_BY_AGGREGATION_TYPE = { - AVERAGE_SUM_ORG_UNIT: 'AVERAGE', - LAST_AVERAGE_ORG_UNIT: 'LAST', - LAST_LAST_ORG_UNIT: 'LAST', + AVERAGE_SUM_ORG_UNIT: PERIOD_AGGREGATION_AVERAGE, + LAST_AVERAGE_ORG_UNIT: PERIOD_AGGREGATION_LAST, + LAST_LAST_ORG_UNIT: PERIOD_AGGREGATION_LAST, LAST_IN_PERIOD_AVERAGE_ORG_UNIT: 'LAST_IN_PERIOD', - FIRST_AVERAGE_ORG_UNIT: 'FIRST', - FIRST_FIRST_ORG_UNIT: 'FIRST', + FIRST_AVERAGE_ORG_UNIT: PERIOD_AGGREGATION_FIRST, + FIRST_FIRST_ORG_UNIT: PERIOD_AGGREGATION_FIRST, MAX_SUM_ORG_UNIT: 'MAX', MIN_SUM_ORG_UNIT: 'MIN', } @@ -48,6 +58,13 @@ const PERIOD_AGGREGATION_BY_AGGREGATION_TYPE = { export const getPeriodAggregationType = (aggregationType) => PERIOD_AGGREGATION_BY_AGGREGATION_TYPE[aggregationType] ?? aggregationType +/* Each add* function adds the sources of an operand and gives its part of + * the item's expression: `{ operand: key }` for an operand (sources.js keys), + * `{ missingValueStrategy, parts }` for an expression, null when its metadata + * is missing. */ + +const toPart = (key) => ({ operand: key }) + const addDataElement = ( collector, metadata, @@ -57,7 +74,7 @@ const addDataElement = ( if (!dataElement) { addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) - return + return null } const aggregationType = @@ -88,6 +105,8 @@ const addDataElement = ( checkDataSetPeriodType(collector, id, dataSet.periodType) addElementToSource(getDataSetSource(collector, dataSet), element) }) + + return toPart(getElementOperandKey(element)) } const addReportingRate = (collector, metadata, dataSetId) => { @@ -98,7 +117,7 @@ const addReportingRate = (collector, metadata, dataSetId) => { code: PROFILE_REASON_MISSING_METADATA, id: dataSetId, }) - return + return null } checkDataSetPeriodType(collector, dataSetId, periodType) @@ -106,137 +125,168 @@ const addReportingRate = (collector, metadata, dataSetId) => { id: dataSetId, periodType, }).reportingRate = true + + return toPart(getReportingRateOperandKey(dataSetId)) } +const toProgramPart = (source) => + source ? toPart(getProgramOperandKey(source)) : null + const addProgramIndicator = (collector, metadata, id) => { const programIndicator = metadata.programIndicators?.[id] if (!programIndicator?.program) { addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) - return + return null } - getProgramSource(collector, metadata, { - id: programIndicator.program, - orgUnitField: programIndicator.orgUnitField, - missingPeriodBoundaries: programIndicator.hasPeriodBoundaries === false, - }) + return toProgramPart( + getProgramSource(collector, metadata, { + id: programIndicator.program, + orgUnitField: programIndicator.orgUnitField, + missingPeriodBoundaries: + programIndicator.hasPeriodBoundaries === false, + }) + ) } // An event or tracker item named by its program: program.element, program.attribute… const addProgramItem = (collector, metadata, id) => { if (!id.includes('.')) { addReason(collector, { code: PROFILE_REASON_MISSING_PROGRAM, id }) - return + return null } - getProgramSource(collector, metadata, { id: id.split('.')[0] }) + return toProgramPart( + getProgramSource(collector, metadata, { id: id.split('.')[0] }) + ) } -const addExpression = (collector, metadata, expression) => - parseExpressionOperands(expression).forEach((operand) => { - switch (operand.type) { - case DIMENSION_TYPE_DATA_ELEMENT: - addDataElement(collector, metadata, operand) - break - case DIMENSION_TYPE_REPORTING_RATE: - addReportingRate(collector, metadata, operand.id) - break - case DIMENSION_TYPE_INDICATOR: - addIndicator(collector, metadata, operand.id) - break - case DIMENSION_TYPE_PROGRAM_INDICATOR: - addProgramIndicator(collector, metadata, operand.id) - break - case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: - case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: - addProgramItem(collector, metadata, operand.id) - break - case OPERAND_TYPE_UNKNOWN: - addReason(collector, { - code: PROFILE_REASON_UNKNOWN_OPERAND, - token: operand.token, - }) - break - default: - // Constants, org unit groups and [days] have no source - } - }) - -const addIndicator = (collector, metadata, id) => { - // Nested indicators (N{}) can refer to each other - if (collector.visitedIndicators.has(id)) { - return +const addOperand = (collector, metadata, operand) => { + switch (operand.type) { + case DIMENSION_TYPE_DATA_ELEMENT: + return addDataElement(collector, metadata, operand) + case REPORTING_RATE: + return addReportingRate(collector, metadata, operand.id) + case DIMENSION_TYPE_INDICATOR: + return addIndicator(collector, metadata, operand.id) + case DIMENSION_TYPE_PROGRAM_INDICATOR: + return addProgramIndicator(collector, metadata, operand.id) + case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: + case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: + return addProgramItem(collector, metadata, operand.id) + case OPERAND_TYPE_UNKNOWN: + addReason(collector, { + code: PROFILE_REASON_UNKNOWN_OPERAND, + token: operand.token, + }) + return null + default: + // Constants, org unit groups and [days] have no source, and never miss + return null } - collector.visitedIndicators.add(id) +} + +const addExpression = ( + collector, + metadata, + { expression, missingValueStrategy } +) => ({ + missingValueStrategy, + parts: parseExpressionOperands(expression) + .map((operand) => addOperand(collector, metadata, operand)) + .filter(Boolean), +}) +// Each side skips only when all its values are missing; the indicator needs both +const addIndicator = (collector, metadata, id) => { const indicator = metadata.indicators?.[id] if (!indicator) { addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) - return + return null + } + + // Nested indicators (N{}) can refer to each other, which analytics refuses + if (collector.indicatorsInProgress.has(id)) { + return null } - addExpression(collector, metadata, indicator.numerator) - addExpression(collector, metadata, indicator.denominator) + collector.indicatorsInProgress.add(id) + + const sides = [indicator.numerator, indicator.denominator].map((side) => + addExpression(collector, metadata, { + expression: side, + missingValueStrategy: SKIP_IF_ALL_VALUES_MISSING, + }) + ) + + collector.indicatorsInProgress.delete(id) + + return { missingValueStrategy: SKIP_IF_ANY_VALUE_MISSING, parts: sides } } const addExpressionDimensionItem = (collector, metadata, id) => { - const expression = metadata.expressionDimensionItems?.[id]?.expression + const { expression, missingValueStrategy } = + metadata.expressionDimensionItems?.[id] ?? {} if (expression === undefined) { addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) - return + return null } - addExpression(collector, metadata, expression) + return addExpression(collector, metadata, { + expression, + missingValueStrategy: + missingValueStrategy ?? SKIP_IF_ALL_VALUES_MISSING, + }) } -/** - * The sources of a data item ({ id, dimensionItemType }), from its metadata - * (fetchDataItemProfileMetadata), with the reasons the profile can't be told - * or should note. - */ -export const collectSources = ({ id, dimensionItemType }, metadata) => { - const collector = createCollector() - +const addItem = (collector, metadata, { id, dimensionItemType }) => { switch (dimensionItemType) { case DIMENSION_TYPE_DATA_ELEMENT: case DIMENSION_TYPE_DATA_ELEMENT_OPERAND: - addDataElement(collector, metadata, { + return addDataElement(collector, metadata, { id: id.split('.')[0], ...(id.includes('.') && { operand: id }), }) - break - case DIMENSION_TYPE_REPORTING_RATE: - addReportingRate(collector, metadata, id.split('.')[0]) - break + case REPORTING_RATE: + return addReportingRate(collector, metadata, id.split('.')[0]) case DIMENSION_TYPE_INDICATOR: - addIndicator(collector, metadata, id) - break + return addIndicator(collector, metadata, id) case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: - addExpressionDimensionItem(collector, metadata, id) - break + return addExpressionDimensionItem(collector, metadata, id) case DIMENSION_TYPE_PROGRAM_INDICATOR: - addProgramIndicator(collector, metadata, id) - break + return addProgramIndicator(collector, metadata, id) case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT: case DIMENSION_TYPE_PROGRAM_DATA_ELEMENT_OPTION: case DIMENSION_TYPE_PROGRAM_ATTRIBUTE: case DIMENSION_TYPE_PROGRAM_ATTRIBUTE_OPTION: case DIMENSION_TYPE_EVENT_DATA_ITEM: - addProgramItem(collector, metadata, id) - break + return addProgramItem(collector, metadata, id) default: addReason(collector, { code: PROFILE_REASON_UNSUPPORTED_ITEM_TYPE, id, dimensionItemType, }) + return null } +} + +/** + * The sources of a data item ({ id, dimensionItemType }), from its metadata + * (fetchDataItemProfileMetadata), with the reasons the profile can't be told + * or should note, and for an indicator or expression dimension item its + * `expression`: how its operands combine. + */ +export const collectSources = (item, metadata) => { + const collector = createCollector() + const part = addItem(collector, metadata, item) return { sources: [...collector.sources.values()], reasons: collector.reasons, + ...(part?.parts && { expression: part }), } } diff --git a/src/modules/dataItemProfile/profile/sourceCollector.js b/src/modules/dataItemProfile/profile/sourceCollector.js index ba3a36a68..7ead7f1f6 100644 --- a/src/modules/dataItemProfile/profile/sourceCollector.js +++ b/src/modules/dataItemProfile/profile/sourceCollector.js @@ -11,7 +11,8 @@ import { usesProgramOrgUnits } from '../sources.js' export const createCollector = () => ({ sources: new Map(), reasons: [], - visitedIndicators: new Set(), + // The indicators being read, against indicators that refer to each other + indicatorsInProgress: new Set(), }) export const addReason = (collector, reason) => collector.reasons.push(reason) @@ -25,7 +26,7 @@ const getSource = (collector, key, createSource) => { } export const getDataSetSource = (collector, { id, periodType }) => - getSource(collector, `dataSet:${id ?? periodType}`, () => ({ + getSource(collector, `dataSet:${id}`, () => ({ dataSet: { id, periodType }, elements: [], reportingRate: false, @@ -49,7 +50,7 @@ export const getProgramSource = ( ) => { if (!metadata.programs?.[id]) { addReason(collector, { code: PROFILE_REASON_MISSING_METADATA, id }) - return + return null } const atAnyOrgUnit = !usesProgramOrgUnits(orgUnitField) @@ -61,7 +62,7 @@ export const getProgramSource = ( .filter(Boolean) .join(':') - getSource(collector, key, () => ({ + return getSource(collector, key, () => ({ dataSet: null, program: { id }, ...(atAnyOrgUnit && { orgUnitField }), diff --git a/src/modules/dataItemProfile/sources.js b/src/modules/dataItemProfile/sources.js index 465330584..b0dab7c5a 100644 --- a/src/modules/dataItemProfile/sources.js +++ b/src/modules/dataItemProfile/sources.js @@ -6,7 +6,7 @@ import { PROGRAM_ORG_UNIT_FIELDS } from './constants.js' * with `orgUnitField` when its values can be at any org unit, and * `missingPeriodBoundaries` for a program indicator without them; * - a data element in no data set: { dataSet: null, elements, reportingRate: false }, - * which nothing collects. */ + * assigned nowhere. */ export const isProgramSource = ({ program }) => Boolean(program) @@ -26,19 +26,39 @@ export const usesProgramOrgUnits = (orgUnitField) => export const canBeAtAnyOrgUnit = ({ orgUnitField }) => !usesProgramOrgUnits(orgUnitField) +/* Operand keys: how a profile's expression (profile.expression) names the + * operands getItemOperands gives */ +export const getElementOperandKey = ({ id, aggregationType }) => + `element:${id}:${aggregationType}` + +export const getReportingRateOperandKey = (dataSetId) => + `reportingRate:${dataSetId}` + +export const getProgramOperandKey = ({ + program, + orgUnitField, + missingPeriodBoundaries, +}) => + [ + 'program', + program.id, + orgUnitField ?? '', + missingPeriodBoundaries ? 'missingPeriodBoundaries' : '', + ].join(':') + /** - * The operands an item's value is computed from: each data element (by id - * and aggregation type) with the sources it is in, each reporting rate, and - * each program. An expression needs them all; one element adds up over its - * sources. + * The operands an item's value is computed from, each with its `key`: each + * data element (by id and aggregation type) with the sources it is in, each + * reporting rate, and each program. One element adds up over its sources; + * profile.expression says how the operands combine. */ export const getItemOperands = (profile) => { const elements = new Map() profile.sources.forEach((source) => source.elements.forEach((element) => { - const key = `${element.id}:${element.aggregationType}` - const operand = elements.get(key) ?? { element, sources: [] } + const key = getElementOperandKey(element) + const operand = elements.get(key) ?? { key, element, sources: [] } operand.sources.push(source) elements.set(key, operand) @@ -49,9 +69,15 @@ export const getItemOperands = (profile) => { ...elements.values(), ...profile.sources .filter(({ reportingRate }) => reportingRate) - .map((source) => ({ reportingRate: true, sources: [source] })), - ...profile.sources - .filter(isProgramSource) - .map((source) => ({ program: true, sources: [source] })), + .map((source) => ({ + key: getReportingRateOperandKey(source.dataSet.id), + reportingRate: true, + sources: [source], + })), + ...profile.sources.filter(isProgramSource).map((source) => ({ + key: getProgramOperandKey(source), + program: true, + sources: [source], + })), ] } diff --git a/yarn.lock b/yarn.lock index 6a59b3849..228275b28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2922,7 +2922,7 @@ "@js-temporal/polyfill" "0.4.3" classnames "^2.3.2" -"@dhis2/multi-calendar-dates@^1.2.2": +"@dhis2/multi-calendar-dates@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@dhis2/multi-calendar-dates/-/multi-calendar-dates-1.3.2.tgz#34e5896f7fdfb761a2ee6035d848cba00446cde5" integrity sha512-H37EptumkqZeHUpbR4wl3y2NZjeipxUNUI2VaHX28z2fbVD7O9H+k1InSskeP5nNWzTLMdPAM4lt/zQP8oRbrg== From 5f05ecca779dbf39176fc8f2906251b9e958d358 Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Mon, 5 Oct 2026 11:44:15 +0200 Subject: [PATCH 4/7] fix: count FIRST and LAST data periods by the year they start in --- .../org-units/aggregation-levels.json | 4 +- src/__fixtures__/org-units/entered-above.json | 4 +- src/__fixtures__/org-units/mixed-levels.json | 4 +- .../org-units/org-unit-groups.json | 6 +- .../org-units/org-unit-requests.json | 2793 +---------------- .../org-units/partly-assigned.json | 4 +- src/__fixtures__/org-units/programs.json | 4 +- .../org-units/user-org-units.json | 4 +- .../aggregation-by-period-type.json | 190 +- .../period-types/carry-windows.json | 4 +- .../period-types/detection-requests.json | 4 +- .../indicators-and-expressions.json | 8 +- .../period-types/metadata-shapes.json | 12 +- .../period-types/mixed-collection.json | 4 +- .../period-types/periods-that-dont-nest.json | 4 +- .../period-types/reporting-rates.json | 46 +- src/api/dataItemProfile/orgUnitListCounts.js | 13 +- .../__tests__/orgUnitFixtures.spec.js | 90 +- .../__tests__/periodFixtures.spec.js | 63 +- .../orgUnits/orgUnitSelection.js | 2 +- .../periods/__tests__/firstLastValues.spec.js | 42 +- .../__tests__/multiCalendarPatches.spec.js | 11 - .../__tests__/relativePeriodRanges.spec.js | 2 +- .../periods/firstLastValues.js | 65 +- .../periods/multiCalendarPatches.js | 8 +- .../periods/relativePeriodRanges.js | 11 +- 26 files changed, 337 insertions(+), 3065 deletions(-) diff --git a/src/__fixtures__/org-units/aggregation-levels.json b/src/__fixtures__/org-units/aggregation-levels.json index 521ab2187..e76f998ef 100644 --- a/src/__fixtures__/org-units/aggregation-levels.json +++ b/src/__fixtures__/org-units/aggregation-levels.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "aggregation-levels", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/org-units/entered-above.json b/src/__fixtures__/org-units/entered-above.json index 597bf225c..198b3dee0 100644 --- a/src/__fixtures__/org-units/entered-above.json +++ b/src/__fixtures__/org-units/entered-above.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "entered-above", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/org-units/mixed-levels.json b/src/__fixtures__/org-units/mixed-levels.json index 223572622..3d9a2f6c2 100644 --- a/src/__fixtures__/org-units/mixed-levels.json +++ b/src/__fixtures__/org-units/mixed-levels.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "mixed-levels", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/org-units/org-unit-groups.json b/src/__fixtures__/org-units/org-unit-groups.json index dd8b482b8..13c2f22ef 100644 --- a/src/__fixtures__/org-units/org-unit-groups.json +++ b/src/__fixtures__/org-units/org-unit-groups.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "org-unit-groups", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { @@ -97,7 +97,7 @@ }, "smoke": "4 of 4 cases, one per pattern", "cases": [ - {"id":"ou-groups__empty","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-empty"]},"expected":{"status":"EMPTY","value":null,"contributes":[],"compatibility":null,"reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.40.12":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.10":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.6":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.1":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"ou-groups__empty","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-empty"]},"expected":{"status":"ERROR","value":null,"contributes":[],"compatibility":null,"reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.11-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.7-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.3-SNAPSHOT":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.40.12":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.41.10":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.42.6":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"},"2.43.1":{"status":"ERROR","value":null,"error":"E7143: Organisation unit or organisation unit level is not valid"}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"ou-groups__g","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g"]},"expected":{"status":"VALUE","value":30303,"contributes":["D2","F3","F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.40.12":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.10":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.6":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.1":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"ou-groups__g-in-D1","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g","D1"]},"expected":{"status":"VALUE","value":3,"contributes":["F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.40.12":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.41.10":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.42.6":{"status":"VALUE","value":3,"rows":{"F1":3}},"2.43.1":{"status":"VALUE","value":3,"rows":{"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"ou-groups__g-in-region","item":{"code":"PTT_OU_EVERYWHERE","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","valueType":"INTEGER","collectionPeriodTypes":["Monthly"],"collectionSources":[{"dataSet":"PTT OU data set everywhere","periodType":"Monthly","orgUnits":["F1","F2","F3","D1","D2","D3"]}]},"query":{"periodType":"Quarterly","period":"2025Q1","orgUnits":["OU_GROUP-g","region"]},"expected":{"status":"VALUE","value":30303,"contributes":["D2","F3","F1"],"compatibility":"full","reasons":[]},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.11-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.7-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.3-SNAPSHOT":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.40.12":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.41.10":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.42.6":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}},"2.43.1":{"status":"VALUE","value":30303,"rows":{"D2":30300,"F1":3}}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} diff --git a/src/__fixtures__/org-units/org-unit-requests.json b/src/__fixtures__/org-units/org-unit-requests.json index 32b077d78..4674f38a3 100644 --- a/src/__fixtures__/org-units/org-unit-requests.json +++ b/src/__fixtures__/org-units/org-unit-requests.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "org-unit-requests", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,2798 +42,9 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], - "findings": { - "2.44-SNAPSHOT": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "gist": true, - "organisationUnits": [ - { - "id": "rZxk3S0qN63" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "gist": true, - "organisationUnits": [ - { - "id": "RIinNUb6rg7" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "gist": true, - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.41.11-SNAPSHOT": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.42.7-SNAPSHOT": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.43.3-SNAPSHOT": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.40.12": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.41.10": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.42.6": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - }, - "2.43.1": { - "metadataShapes": [ - { - "name": "dataElements-aggregationLevels", - "path": "/api/dataElements.json?filter=code:$like:PTT_OU_AGG&fields=id,code,aggregationType,aggregationLevels,dataSetElements[dataSet[id,periodType]]&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "dataElements": [ - { - "code": "PTT_OU_AGG_D1_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "Yo1BsQNngHy" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "ZRYrXnbcbjJ" - }, - { - "code": "PTT_OU_AGG_F_2", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "b5xszkgbXVd" - } - } - ], - "aggregationLevels": [ - 2 - ], - "id": "RNhL3JmLlC0" - }, - { - "code": "PTT_OU_AGG_F_2_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "CGAbAPpLZTo" - } - } - ], - "aggregationLevels": [ - 2, - 3 - ], - "id": "WZ6aknVLD9A" - }, - { - "code": "PTT_OU_AGG_F_3", - "aggregationType": "SUM", - "dataSetElements": [ - { - "dataSet": { - "periodType": "Monthly", - "id": "dM4sBCBFDDC" - } - } - ], - "aggregationLevels": [ - 3 - ], - "id": "FPp01mLrknd" - } - ] - } - }, - { - "name": "programIndicators", - "path": "/api/programIndicators.json?filter=code:$like:PTT_PROG&fields=id,code,program[id],orgUnitField,analyticsType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programIndicators": [ - { - "code": "PTT_PROG_PI_EVENT", - "program": { - "id": "KfzRtyEQHht" - }, - "analyticsType": "EVENT", - "id": "TafgHfMvqW7" - }, - { - "code": "PTT_PROG_PI_EVENT_PLACE", - "program": { - "id": "KfzRtyEQHht" - }, - "orgUnitField": "WJ1j79Dlubx", - "analyticsType": "EVENT", - "id": "eSWGLPCy2ZK" - }, - { - "code": "PTT_PROG_PI_TRACKER", - "program": { - "id": "lAcD9QrX1xQ" - }, - "analyticsType": "EVENT", - "id": "NTvweRnHeLC" - }, - { - "code": "PTT_PROG_PI_TRACKER_ENROLLMENT", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "ENROLLMENT", - "analyticsType": "EVENT", - "id": "nYG1z4dFVnX" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_END", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_END", - "analyticsType": "EVENT", - "id": "U0mtkhBIEWK" - }, - { - "code": "PTT_PROG_PI_TRACKER_OWNER_START", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "OWNER_AT_START", - "analyticsType": "EVENT", - "id": "dXtvaBLgiA4" - }, - { - "code": "PTT_PROG_PI_TRACKER_REGISTRATION", - "program": { - "id": "lAcD9QrX1xQ" - }, - "orgUnitField": "REGISTRATION", - "analyticsType": "EVENT", - "id": "VwK2ljj07rP" - } - ] - } - }, - { - "name": "programs", - "path": "/api/programs.json?filter=code:$like:PTT_PROG&fields=id,code,programType&paging=false&order=code:asc", - "httpStatus": 200, - "response": { - "programs": [ - { - "code": "PTT_PROG_EVENT", - "programType": "WITHOUT_REGISTRATION", - "id": "KfzRtyEQHht" - }, - { - "code": "PTT_PROG_TRACKER", - "programType": "WITH_REGISTRATION", - "id": "lAcD9QrX1xQ" - } - ] - } - }, - { - "name": "organisationUnitLevels", - "path": "/api/organisationUnitLevels.json?fields=id,level,displayName&paging=false&order=level:asc", - "httpStatus": 200, - "response": { - "organisationUnitLevels": [ - { - "level": 1, - "displayName": "National", - "id": "H1KlN4QIauv" - }, - { - "level": 2, - "displayName": "District", - "id": "wjP19dkFeIk" - }, - { - "level": 3, - "displayName": "Chiefdom", - "id": "tTUf91fCytl" - }, - { - "level": 4, - "displayName": "Facility", - "id": "m9lBJogzE95" - } - ] - } - }, - { - "name": "count-level", - "path": "/api/organisationUnits.json?filter=level:eq:4&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Rp268JB6Ne4" - } - ] - } - }, - { - "name": "count-path", - "path": "/api/organisationUnits.json?filter=path:like:RIinNUb6rg7&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "count-dataSet", - "path": "/api/organisationUnits.json?filter=dataSets.id:eq:v200HCJsE6E&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-program", - "path": "/api/organisationUnits.json?filter=programs.id:eq:KfzRtyEQHht&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-ids", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,YcWWJD42rFM,THU3mEbE4b6]&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "THU3mEbE4b6" - } - ] - } - }, - { - "name": "count-group", - "path": "/api/organisationUnits.json?filter=organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "ZBm5vBRXjeH" - } - ] - } - }, - { - "name": "count-grandparent-in-group", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:TTEvM2Zx7wF&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "tsmDjF9bxzK" - } - ] - } - }, - { - "name": "count-grandparent-in-group-none", - "path": "/api/organisationUnits.json?filter=parent.parent.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [] - } - }, - { - "name": "count-child-in-group", - "path": "/api/organisationUnits.json?filter=children.organisationUnitGroups.id:eq:VSMvSA8RdOa&fields=id&pageSize=1", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "list-assigned-ancestors", - "path": "/api/organisationUnits.json?filter=id:in:[tsmDjF9bxzK,Zkx2DMsGgi0,RIinNUb6rg7]&filter=dataSets.id:eq:pRfTWd7fDDO&fields=id&paging=false", - "httpStatus": 200, - "response": { - "organisationUnits": [ - { - "id": "Zkx2DMsGgi0" - } - ] - } - }, - { - "name": "me", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd", - "id": "ImspTQPwCqd", - "level": 1 - } - ] - } - }, - { - "name": "me-ptt-user", - "path": "/api/me.json?fields=organisationUnits[id,level,path],dataViewOrganisationUnits[id,level,path]", - "httpStatus": 200, - "response": { - "dataViewOrganisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ], - "organisationUnits": [ - { - "path": "/ImspTQPwCqd/RIinNUb6rg7", - "id": "RIinNUb6rg7", - "level": 2 - } - ] - } - } - ] - } - }, "hierarchy": { "orgUnits": { "region": { diff --git a/src/__fixtures__/org-units/partly-assigned.json b/src/__fixtures__/org-units/partly-assigned.json index 924e4fdeb..54283931f 100644 --- a/src/__fixtures__/org-units/partly-assigned.json +++ b/src/__fixtures__/org-units/partly-assigned.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "partly-assigned", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/org-units/programs.json b/src/__fixtures__/org-units/programs.json index 5ea3d0dec..0bd7e902c 100644 --- a/src/__fixtures__/org-units/programs.json +++ b/src/__fixtures__/org-units/programs.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "programs", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/org-units/user-org-units.json b/src/__fixtures__/org-units/user-org-units.json index 595b3f437..83a1257d8 100644 --- a/src/__fixtures__/org-units/user-org-units.json +++ b/src/__fixtures__/org-units/user-org-units.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "user-org-units", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "hierarchy": { diff --git a/src/__fixtures__/period-types/aggregation-by-period-type.json b/src/__fixtures__/period-types/aggregation-by-period-type.json index 06ba4c2f8..32d704606 100644 --- a/src/__fixtures__/period-types/aggregation-by-period-type.json +++ b/src/__fixtures__/period-types/aggregation-by-period-type.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "aggregation-by-period-type", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "smoke": "403 of 60306 cases, one per pattern", @@ -105,135 +105,135 @@ {"id":"agg-COUNT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-COUNT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_COUNT_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"COUNT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":13},"2.43.3-SNAPSHOT":{"status":"VALUE","value":13},"2.43.1":{"status":"VALUE","value":13}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, {"id":"agg-FIRST__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-FIRST_FIRST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-FIRST_FIRST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":2},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":2},"2.41.11-SNAPSHOT":{"status":"VALUE","value":2},"2.42.7-SNAPSHOT":{"status":"VALUE","value":2},"2.43.3-SNAPSHOT":{"status":"VALUE","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":2},"2.42.6":{"status":"VALUE","value":2},"2.43.1":{"status":"VALUE","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-FIRST_FIRST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_FIRST_FIRST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"FIRST_FIRST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":6},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":4},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":57},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":6},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_AVG_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":4},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":57},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_IN_PERIOD__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LIP_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, @@ -272,32 +272,32 @@ {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, {"id":"agg-LAST_IN_PERIOD_AVERAGE_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LIP_AVG_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_IN_PERIOD_AVERAGE_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":6},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.40.12":{"status":"REPEATED","value":6},"2.41.10":{"status":"REPEATED","value":6},"2.42.6":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-Daily__p-20250101__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":3},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":3},"2.43.3-SNAPSHOT":{"status":"VALUE","value":3},"2.43.1":{"status":"VALUE","value":3}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":4},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":4},"2.42.7-SNAPSHOT":{"status":"VALUE","value":4},"2.43.3-SNAPSHOT":{"status":"VALUE","value":4},"2.42.6":{"status":"VALUE","value":4},"2.43.1":{"status":"VALUE","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":6},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":6},"2.41.11-SNAPSHOT":{"status":"VALUE","value":6},"2.42.7-SNAPSHOT":{"status":"VALUE","value":6},"2.43.3-SNAPSHOT":{"status":"VALUE","value":6},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":6},"2.42.6":{"status":"VALUE","value":6},"2.43.1":{"status":"VALUE","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-BiMonthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_LAST_OU_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":6},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":6},"2.43.1":{"status":"REPEATED","value":6}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialFeb__p-2024Feb__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialFeb","period":"2024Feb","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialJuly__p-2024July__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialJuly","period":"2024July","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"REPEATED","value":2},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialApril__q-Yearly__p-2024__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialApril","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialApril"]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialAug__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialAug","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialAug"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialFeb__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialFeb","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialFeb"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialNov__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialNov"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-LAST_LAST_ORG_UNIT__col-FinancialSep__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_FinancialSep","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["FinancialSep"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"agg-LAST_LAST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_Quarterly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":4},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":4},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":4},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":4},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":4},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":4},"2.42.6":{"status":"REPEATED","value":4},"2.43.1":{"status":"REPEATED","value":4}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-QuarterlyNov__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_QuarterlyNov","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["QuarterlyNov"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":5},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":5},"2.41.11-SNAPSHOT":{"status":"VALUE","value":5},"2.42.7-SNAPSHOT":{"status":"VALUE","value":5},"2.43.3-SNAPSHOT":{"status":"VALUE","value":5},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":5},"2.42.6":{"status":"VALUE","value":5},"2.43.1":{"status":"VALUE","value":5}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-SixMonthly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_SixMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["SixMonthly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":2},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":2},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":2},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":2},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":2},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":2},"2.42.6":{"status":"REPEATED","value":2},"2.43.1":{"status":"REPEATED","value":2}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"agg-LAST_LAST_ORG_UNIT__col-WeeklyFriday__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G1_LAST_LAST_OU_WeeklyFriday","dimensionItemType":"DATA_ELEMENT","aggregationType":"LAST_LAST_ORG_UNIT","valueType":"INTEGER","collectionPeriodTypes":["WeeklyFriday"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":57},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":57},"2.43.3-SNAPSHOT":{"status":"VALUE","value":57},"2.43.1":{"status":"VALUE","value":57}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"agg-MAX__col-BiMonthly__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":7},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":7},"2.41.11-SNAPSHOT":{"status":"VALUE","value":7},"2.42.7-SNAPSHOT":{"status":"VALUE","value":7},"2.43.3-SNAPSHOT":{"status":"VALUE","value":7},"2.40.12":{"status":"VALUE","value":7},"2.41.10":{"status":"VALUE","value":7},"2.42.6":{"status":"VALUE","value":7},"2.43.1":{"status":"VALUE","value":7}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-MAX__col-BiMonthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"agg-MAX__col-BiMonthly__q-FinancialApril__p-2024April__A","item":{"code":"PTT_G1_MAX_BiMonthly","dimensionItemType":"DATA_ELEMENT","aggregationType":"MAX","valueType":"INTEGER","collectionPeriodTypes":["BiMonthly"]},"query":{"periodType":"FinancialApril","period":"2024April","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":8},"2.41.11-SNAPSHOT":{"status":"VALUE","value":8},"2.42.7-SNAPSHOT":{"status":"VALUE","value":8},"2.43.3-SNAPSHOT":{"status":"VALUE","value":8},"2.40.12":{"status":"VALUE","value":8},"2.41.10":{"status":"VALUE","value":8},"2.42.6":{"status":"VALUE","value":8},"2.43.1":{"status":"VALUE","value":8}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, diff --git a/src/__fixtures__/period-types/carry-windows.json b/src/__fixtures__/period-types/carry-windows.json index d980d935c..3b51516bd 100644 --- a/src/__fixtures__/period-types/carry-windows.json +++ b/src/__fixtures__/period-types/carry-windows.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "carry-windows", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "findings": { diff --git a/src/__fixtures__/period-types/detection-requests.json b/src/__fixtures__/period-types/detection-requests.json index 06e7d010f..5f5d84ce6 100644 --- a/src/__fixtures__/period-types/detection-requests.json +++ b/src/__fixtures__/period-types/detection-requests.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "detection-requests", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "smoke": "17 of 46 cases, one per pattern", diff --git a/src/__fixtures__/period-types/indicators-and-expressions.json b/src/__fixtures__/period-types/indicators-and-expressions.json index 93f495b1a..e1fdb9156 100644 --- a/src/__fixtures__/period-types/indicators-and-expressions.json +++ b/src/__fixtures__/period-types/indicators-and-expressions.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "indicators-and-expressions", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "smoke": "79 of 1656 cases, one per pattern and 13 the library's tests name", @@ -121,10 +121,10 @@ {"id":"ind-period-offset__q-Yearly__p-2024__B","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"B"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"ind-period-offset__q-Yearly__p-2024__region","item":{"code":"PTT_G4_IND_PERIOD_OFFSET","dimensionItemType":"INDICATOR","numerator":"#{BeN8IzxwwJF}.periodOffset(-1)","denominator":"1","annualized":false,"operands":[{"id":"BeN8IzxwwJF","ref":"count","dimensionItemType":"DATA_ELEMENT","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"Yearly","period":"2024","orgUnit":"region"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"EMPTY","value":null},"2.41.11-SNAPSHOT":{"status":"EMPTY","value":null},"2.42.7-SNAPSHOT":{"status":"EMPTY","value":null},"2.43.3-SNAPSHOT":{"status":"EMPTY","value":null},"2.40.12":{"status":"EMPTY","value":null},"2.41.10":{"status":"EMPTY","value":null},"2.42.6":{"status":"EMPTY","value":null},"2.43.1":{"status":"EMPTY","value":null}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"ind-reporting-rate__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"ind-reporting-rate__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"ind-reporting-rate__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"recorded","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, {"id":"ind-reporting-rate__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":58.3333333333},"2.43.3-SNAPSHOT":{"status":"VALUE","value":58.3333333333},"2.43.1":{"status":"VALUE","value":58.3333333333}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}}, {"id":"ind-reporting-rate__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.42.7-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":66.6666666667},"2.42.6":{"status":"VALUE","value":66.6666666667},"2.43.1":{"status":"VALUE","value":66.6666666667}},"verdict":{"2.44-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, {"id":"ind-reporting-rate__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":null},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"recorded","2.41.11-SNAPSHOT":"recorded","2.42.7-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.40.12":"fail","2.41.10":"recorded","2.42.6":"recorded","2.43.1":"recorded"}}, - {"id":"ind-reporting-rate__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}} + {"id":"ind-reporting-rate__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G4_IND_REPORTING_RATE","dimensionItemType":"INDICATOR","numerator":"R{FUvJSlEH9B3.REPORTING_RATE}","denominator":"1","annualized":false,"operands":[{"id":"FUvJSlEH9B3","ref":"rate","dimensionItemType":"REPORTING_RATE","aggregationType":"SUM","collectionPeriodTypes":["Monthly"]}]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"recorded","2.43.3-SNAPSHOT":"recorded","2.43.1":"recorded"}} ] } diff --git a/src/__fixtures__/period-types/metadata-shapes.json b/src/__fixtures__/period-types/metadata-shapes.json index ff0094b3c..78907bfb2 100644 --- a/src/__fixtures__/period-types/metadata-shapes.json +++ b/src/__fixtures__/period-types/metadata-shapes.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "versions": { "2.44-SNAPSHOT": { "instance": "dev", @@ -3710,7 +3710,7 @@ }, "2.43.1": { "instance": "stable-2-43-1", - "date": "2026-10-02", + "date": "2026-10-05", "requests": [ { "name": "dataElements", @@ -3743,14 +3743,14 @@ "dataSetElements": [ { "dataSet": { - "periodType": "Weekly", - "id": "YlravvdHwIj" + "periodType": "WeeklyWednesday", + "id": "wRXyMvEnlyA" } }, { "dataSet": { - "periodType": "WeeklyWednesday", - "id": "wRXyMvEnlyA" + "periodType": "Weekly", + "id": "YlravvdHwIj" } } ], diff --git a/src/__fixtures__/period-types/mixed-collection.json b/src/__fixtures__/period-types/mixed-collection.json index 8d1689a3f..571cdf636 100644 --- a/src/__fixtures__/period-types/mixed-collection.json +++ b/src/__fixtures__/period-types/mixed-collection.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "mixed-collection", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "smoke": "22 of 105 cases, one per pattern", diff --git a/src/__fixtures__/period-types/periods-that-dont-nest.json b/src/__fixtures__/period-types/periods-that-dont-nest.json index d5bd975cf..e77d21fea 100644 --- a/src/__fixtures__/period-types/periods-that-dont-nest.json +++ b/src/__fixtures__/period-types/periods-that-dont-nest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "periods-that-dont-nest", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "findings": { diff --git a/src/__fixtures__/period-types/reporting-rates.json b/src/__fixtures__/period-types/reporting-rates.json index c858409aa..bbb60ef3a 100644 --- a/src/__fixtures__/period-types/reporting-rates.json +++ b/src/__fixtures__/period-types/reporting-rates.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "group": "reporting-rates", "provisional": false, - "source": "maps-tools/test-data-period-types (14abea3, with local changes)", + "source": "maps-tools/test-data-item-profile (944d3f7, with local changes)", "runs": [ { "instance": "dev", @@ -42,7 +42,7 @@ { "instance": "stable-2-43-1", "version": "2.43.1", - "date": "2026-10-02" + "date": "2026-10-05" } ], "smoke": "36 of 2070 cases, one per pattern", @@ -52,36 +52,36 @@ {"id":"rate-ACTUAL_REPORTS-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":213},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":213},"2.43.3-SNAPSHOT":{"status":"VALUE","value":213},"2.43.1":{"status":"VALUE","value":213}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"rate-ACTUAL_REPORTS-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":244},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":244},"2.42.7-SNAPSHOT":{"status":"VALUE","value":244},"2.43.3-SNAPSHOT":{"status":"VALUE","value":244},"2.42.6":{"status":"VALUE","value":244},"2.43.1":{"status":"VALUE","value":244}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-ACTUAL_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":92},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":92},"2.41.11-SNAPSHOT":{"status":"VALUE","value":92},"2.42.7-SNAPSHOT":{"status":"VALUE","value":92},"2.43.3-SNAPSHOT":{"status":"VALUE","value":92},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":92},"2.42.6":{"status":"VALUE","value":92},"2.43.1":{"status":"VALUE","value":92}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"rate-ACTUAL_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-ACTUAL_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-ACTUAL_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-ACTUAL_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"ACTUAL_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-EXPECTED_REPORTS-Daily__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":59},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":59},"2.41.11-SNAPSHOT":{"status":"VALUE","value":59},"2.42.7-SNAPSHOT":{"status":"VALUE","value":59},"2.43.3-SNAPSHOT":{"status":"VALUE","value":59},"2.40.12":{"status":"VALUE","value":59},"2.41.10":{"status":"VALUE","value":59},"2.42.6":{"status":"VALUE","value":59},"2.43.1":{"status":"VALUE","value":59}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-EXPECTED_REPORTS-Daily__q-Daily__p-20250101__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"VALUE","value":1},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":1},"2.41.11-SNAPSHOT":{"status":"VALUE","value":1},"2.42.7-SNAPSHOT":{"status":"VALUE","value":1},"2.43.3-SNAPSHOT":{"status":"VALUE","value":1},"2.40.12":{"status":"VALUE","value":1},"2.41.10":{"status":"VALUE","value":1},"2.42.6":{"status":"VALUE","value":1},"2.43.1":{"status":"VALUE","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-EXPECTED_REPORTS-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"rate-EXPECTED_REPORTS-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":366},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":366},"2.42.7-SNAPSHOT":{"status":"VALUE","value":366},"2.43.3-SNAPSHOT":{"status":"VALUE","value":366},"2.42.6":{"status":"VALUE","value":366},"2.43.1":{"status":"VALUE","value":366}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-EXPECTED_REPORTS-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":92},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":92},"2.41.11-SNAPSHOT":{"status":"VALUE","value":92},"2.42.7-SNAPSHOT":{"status":"VALUE","value":92},"2.43.3-SNAPSHOT":{"status":"VALUE","value":92},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":92},"2.42.6":{"status":"VALUE","value":92},"2.43.1":{"status":"VALUE","value":92}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"rate-EXPECTED_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-EXPECTED_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, + {"id":"rate-EXPECTED_REPORTS-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.40.12":{"status":"REPEATED","value":1},"2.41.10":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":1},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":1},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":1},"2.42.6":{"status":"REPEATED","value":1},"2.43.1":{"status":"REPEATED","value":1}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-EXPECTED_REPORTS-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"EXPECTED_REPORTS","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-REPORTING_RATE-Daily__q-BiMonthly__p-202501B__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"BiMonthly","period":"202501B","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-REPORTING_RATE-Daily__q-Daily__p-20250101__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"Daily","period":"20250101","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"VALUE","value":100},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-REPORTING_RATE-Daily__q-FinancialAug__p-2023Aug__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialAug","period":"2023Aug","orgUnit":"A"},"expected":{"status":"VALUE","value":58.19672131147541},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":58.19672131147541},"2.43.3-SNAPSHOT":{"status":"VALUE","value":58.19672131147541},"2.43.1":{"status":"VALUE","value":58.19672131147541}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, {"id":"rate-REPORTING_RATE-Daily__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"VALUE","value":66.66666666666666},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.42.7-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.43.3-SNAPSHOT":{"status":"VALUE","value":66.66666666666667},"2.42.6":{"status":"VALUE","value":66.66666666666667},"2.43.1":{"status":"VALUE","value":66.66666666666667}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, {"id":"rate-REPORTING_RATE-Daily__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Daily","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Daily"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"VALUE","value":100},"observed":{"2.44-SNAPSHOT":{"status":"VALUE","value":100},"2.41.11-SNAPSHOT":{"status":"VALUE","value":100},"2.42.7-SNAPSHOT":{"status":"VALUE","value":100},"2.43.3-SNAPSHOT":{"status":"VALUE","value":100},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"VALUE","value":100},"2.42.6":{"status":"VALUE","value":100},"2.43.1":{"status":"VALUE","value":100}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, - {"id":"rate-REPORTING_RATE-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.42.6":"fail","2.43.1":"fail"}}, - {"id":"rate-REPORTING_RATE-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"EMPTY","value":null},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"fail","2.41.11-SNAPSHOT":"fail","2.42.7-SNAPSHOT":"fail","2.43.3-SNAPSHOT":"fail","2.40.12":"fail","2.41.10":"fail","2.42.6":"fail","2.43.1":"fail"}} + {"id":"rate-REPORTING_RATE-Monthly__q-BiWeekly__p-2025BiW1__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"BiWeekly","period":"2025BiW1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Monthly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Monthly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Monthly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Quarterly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Quarterly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Quarterly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Weekly__q-WeeklyFriday__p-2024FriW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklyFriday","period":"2024FriW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Weekly__q-WeeklySaturday__p-2024SatW53__A","item":{"code":"PTT_G5_DS_Weekly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Weekly"]},"query":{"periodType":"WeeklySaturday","period":"2024SatW53","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"REPEATED","value":0},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"pass","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Yearly__q-FinancialSep__p-2023Sep__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"FinancialSep","period":"2023Sep","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.42.6":"pass","2.43.1":"pass"}}, + {"id":"rate-REPORTING_RATE-Yearly__q-QuarterlyNov__p-2025NovQ1__A","item":{"code":"PTT_G5_DS_Yearly","dimensionItemType":"REPORTING_RATE","metric":"REPORTING_RATE","collectionPeriodTypes":["Yearly"]},"query":{"periodType":"QuarterlyNov","period":"2025NovQ1","orgUnit":"A"},"expected":{"status":"REPEATED","value":0},"observed":{"2.44-SNAPSHOT":{"status":"REPEATED","value":0},"2.41.11-SNAPSHOT":{"status":"REPEATED","value":0},"2.42.7-SNAPSHOT":{"status":"REPEATED","value":0},"2.43.3-SNAPSHOT":{"status":"REPEATED","value":0},"2.40.12":{"status":"ERROR","value":null,"error":"500: Can't find resource for bundle java.util.PropertyResourceBundle, key format.QuarterlyNov.startDate"},"2.41.10":{"status":"REPEATED","value":0},"2.42.6":{"status":"REPEATED","value":0},"2.43.1":{"status":"REPEATED","value":0}},"verdict":{"2.44-SNAPSHOT":"pass","2.41.11-SNAPSHOT":"pass","2.42.7-SNAPSHOT":"pass","2.43.3-SNAPSHOT":"pass","2.40.12":"fail","2.41.10":"pass","2.42.6":"pass","2.43.1":"pass"}} ] } diff --git a/src/api/dataItemProfile/orgUnitListCounts.js b/src/api/dataItemProfile/orgUnitListCounts.js index 98a25cc5d..009a7fe00 100644 --- a/src/api/dataItemProfile/orgUnitListCounts.js +++ b/src/api/dataItemProfile/orgUnitListCounts.js @@ -14,12 +14,12 @@ const indexGroup = (memberPaths) => { new Set( members .filter((ids) => ids.length > height) - .map((ids) => ids[ids.length - 1 - height]) + .map((ids) => ids.at(-1 - height)) ) const aboveByHeight = new Map() return { - memberIds: new Set(members.map((ids) => ids[ids.length - 1])), + memberIds: new Set(members.map((ids) => ids.at(-1))), isAboveMembers: (id, height) => { if (!aboveByHeight.has(height)) { aboveByHeight.set(height, aboveMembers(height)) @@ -36,10 +36,10 @@ const passesGroupFilter = (ids, steps, group) => { const children = (steps.match(/children\./g) ?? []).length if (children) { - return group.isAboveMembers(ids[ids.length - 1], children) + return group.isAboveMembers(ids.at(-1), children) } - const ancestor = ids[ids.length - 1 - parents] + const ancestor = ids.at(-1 - parents) return Boolean(ancestor) && group.memberIds.has(ancestor) } @@ -59,10 +59,7 @@ const passesFilter = (ids, condition, groups) => { case 'path:like': return ids.includes(value) case 'id:in': - return value - .slice(1, -1) - .split(',') - .includes(ids[ids.length - 1]) + return value.slice(1, -1).split(',').includes(ids.at(-1)) default: return false } diff --git a/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js index 205e21e85..5bf138a82 100644 --- a/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js +++ b/src/modules/dataItemProfile/__tests__/orgUnitFixtures.spec.js @@ -8,7 +8,7 @@ import { getDataItemProfileOrgUnitCompatibility } from '../compatibility/getData import { getDataItemProfile } from '../getDataItemProfile.js' /* The fixtures come from the test tool in dhis2/maps-tools - * (test-data-period-types, org unit groups): analytics' answers on 2.40 to + * (test-data-item-profile, org unit groups): analytics' answers on 2.40 to * 2.44 for data sets and programs assigned at different levels, on the * tool's own org units. Each case is rebuilt here: its hierarchy and * assignments become a fake server, and the library judges the selection @@ -260,52 +260,60 @@ describe('org unit fixtures', () => { ) }) + // The org unit requests are recorded with the period ones, in metadata-shapes.json describe('the metadata requests, as each version answered them', () => { - const { findings } = readFixture('org-unit-requests') - - describe.each(Object.entries(findings))( - '%s', - (_, { metadataShapes }) => { - const responseOf = (name) => - metadataShapes.find((shape) => shape.name === name).response - - it('give data elements their aggregation levels', () => { - const { dataElements } = normalizeDataItemProfileMetadata({ - dataElements: responseOf( - 'dataElements-aggregationLevels' - ), - }) + const { versions } = JSON.parse( + fs.readFileSync( + path.join(FIXTURES_DIR, '../period-types/metadata-shapes.json') + ) + ) - expect( - Object.values(dataElements).map( - ({ aggregationLevels }) => aggregationLevels - ) - ).toContainEqual([2, 3]) - }) + describe.each(Object.entries(versions))('%s', (_, { requests }) => { + const responseOf = (name) => + requests.find((request) => request.name === name).response - it('give program indicators their program and orgUnitField', () => { - const { programIndicators } = - normalizeDataItemProfileMetadata({ - programIndicators: responseOf('programIndicators'), - }) - const indicators = Object.values(programIndicators) + it('give data elements their aggregation levels', () => { + const { dataElements } = normalizeDataItemProfileMetadata({ + dataElements: responseOf('dataElements-aggregationLevels'), + }) - expect(indicators.every(({ program }) => program)).toBe( - true + expect( + Object.values(dataElements).map( + ({ aggregationLevels }) => aggregationLevels ) - expect( - indicators.map(({ orgUnitField }) => orgUnitField) - ).toEqual( - expect.arrayContaining(['REGISTRATION', 'OWNER_AT_END']) - ) - }) + ).toContainEqual([2, 3]) + }) - it('give the user data view org units', () => { - expect( - responseOf('me-ptt-user').dataViewOrganisationUnits - ).toHaveLength(1) + it('give program indicators their program and orgUnitField', () => { + const response = responseOf('programIndicators') + const { programIndicators } = normalizeDataItemProfileMetadata({ + programIndicators: response, }) - } - ) + const read = Object.entries(programIndicators).map( + ([id, { program, orgUnitField }]) => ({ + id, + program, + orgUnitField, + }) + ) + + expect(read).toEqual( + response.programIndicators.map( + ({ id, program, orgUnitField }) => ({ + id, + program: program.id, + orgUnitField, + }) + ) + ) + expect(read.some(({ orgUnitField }) => orgUnitField)).toBe(true) + }) + + it('give the user data view org units', () => { + expect( + responseOf('me-ptt-user').dataViewOrganisationUnits + ).toHaveLength(1) + }) + }) }) }) diff --git a/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js index 43bfe3726..7a4c812cf 100644 --- a/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js +++ b/src/modules/dataItemProfile/__tests__/periodFixtures.spec.js @@ -3,6 +3,7 @@ import path from 'path' import { inDataSets } from '../../../__fixtures__/dataItemProfileMetadata.js' import { getDataItemProfile } from '../getDataItemProfile.js' import { getDataItemProfileCompatibility } from '../getDataItemProfileCompatibility.js' +import { getYear } from '../periods/calendarDates.js' import { getFirstOrLastValuePeriod, getYearsTouched, @@ -15,7 +16,7 @@ import { getPeriodTypeOfPeriodId } from '../periods/periodTypes.js' import { getPeriodAggregationType } from '../profile/collectSources.js' /* The fixtures come from the test tool in dhis2/maps-tools - * (test-data-period-types). PERIOD_TYPES_FIXTURES_DIR points the test at the + * (test-data-item-profile). PERIOD_TYPES_FIXTURES_DIR points the test at the * tool's full export; a folder in it holds one group split in parts. */ const FIXTURES_DIR = process.env.PERIOD_TYPES_FIXTURES_DIR ?? @@ -103,7 +104,9 @@ const describeLibrary = ({ status, reasons }) => /* Cases the metadata can't see: the library's answer differs from what * analytics returns, on purpose, so they are not compared. The empty-result * check after Update is the way to find them. */ +// The test data covers the periods of 2024 and 2025 const TEST_DATA_START = '2024-01-01' +const TEST_DATA_END = '2025-12-31' // The periods asked in one request: the case's, and in the carry-windows group the other one of the pair const getRequestPeriods = ({ query }) => @@ -114,8 +117,12 @@ const isFirstOrLast = ({ aggregationType }) => /* The data period whose value the library says FIRST or LAST data takes for * the case's period, by the dates of the request's periods; null when none, - * undefined when it doesn't apply */ -const predictFirstOrLastValuePeriod = (fixtureCase) => { + * undefined when it doesn't apply. `fromYear` leaves out the years before it, + * as when they hold no data. */ +const predictFirstOrLastValuePeriod = ( + fixtureCase, + { periodAggregationType, fromYear = -Infinity } = {} +) => { const { item, query } = fixtureCase const requestDates = getRequestPeriods(fixtureCase).map((period) => getPeriodDates(period) @@ -129,26 +136,43 @@ const predictFirstOrLastValuePeriod = (fixtureCase) => { return undefined } - return getFirstOrLastValuePeriod({ - periodAggregationType: getPeriodAggregationType(item.aggregationType), - periodType: item.collectionPeriodTypes[0], - dates: getPeriodDates(query.period), - years: [...new Set(requestDates.flatMap(getYearsTouched))], - }) + const years = [...new Set(requestDates.flatMap(getYearsTouched))].filter( + (year) => year >= fromYear + ) + + return years.length + ? getFirstOrLastValuePeriod({ + periodAggregationType: + periodAggregationType ?? + getPeriodAggregationType(item.aggregationType), + periodType: item.collectionPeriodTypes[0], + dates: getPeriodDates(query.period), + years, + }) + : null } /* What analytics can answer when FIRST or LAST should take a period before * the test data: nothing, or (where it names the data period) the first one - * with data. Any other answer is compared, so a wrong prediction fails. */ + * with data among the years the request touches. That is the period holding + * the start of the test data (it overlaps 2024, so it holds data), or the + * first that counts in a year after it. Any other answer is compared, so a + * wrong prediction fails. */ const answersWithoutEarlierData = (fixtureCase) => { - const firstDataPeriod = getFixedPeriodOfTypeByDate( - fixtureCase.item.collectionPeriodTypes[0], - TEST_DATA_START - ) + const firstDataPeriods = [ + getFixedPeriodOfTypeByDate( + fixtureCase.item.collectionPeriodTypes[0], + TEST_DATA_START + ), + predictFirstOrLastValuePeriod(fixtureCase, { + periodAggregationType: 'FIRST', + fromYear: getYear(TEST_DATA_START), + }), + ].map((period) => period?.startDate) return getOutcomes(fixtureCase).every(([, { value, source }]) => source - ? getPeriodDates(source)?.startDate === firstDataPeriod?.startDate + ? firstDataPeriods.includes(getPeriodDates(source)?.startDate) : value === null || value === undefined ) } @@ -199,6 +223,15 @@ const METADATA_BLIND_SPOTS = [ getPeriodDates(query.period)?.endDate < TEST_DATA_START, reason: 'the period ends before the test data', }, + { + // Group 7 asks periods up to mid-2026 + pattern: /^carry-/, + applies: ({ query }) => + getPeriodDates(query.period)?.endDate > TEST_DATA_END, + reason: 'the period ends after the test data', + // The smoke subset keeps none + optional: true, + }, ] const isBlindSpot = (fixtureCase) => diff --git a/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js index 774d5db8e..8711b0a03 100644 --- a/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js +++ b/src/modules/dataItemProfile/orgUnits/orgUnitSelection.js @@ -231,7 +231,7 @@ export const getRequestedLevels = (selectionItem, parentItems, coverage) => { } // A level deeper than the hierarchy holds no org unit - if (levels.length && level > levels[levels.length - 1].level) { + if (levels.length && level > levels.at(-1).level) { return [] } diff --git a/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js index 11a8bf48a..2b8e2a7ba 100644 --- a/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/firstLastValues.spec.js @@ -60,7 +60,7 @@ describe('getFirstOrLastValuePeriod', () => { ).toMatchObject({ id: '202012' }) }) - it('counts only data periods of the years touched, by their id', () => { + it('counts only data periods of the years touched, by the year they start in', () => { expect( sourceOf({ periodType: 'Monthly', period: '20250101' }) ).toBeNull() @@ -68,10 +68,46 @@ describe('getFirstOrLastValuePeriod', () => { expect( sourceOf({ periodType: 'Monthly', period: '2025W1' }) ).toMatchObject({ id: '202412' }) - // 2025Nov (November 2024 to October 2025) is a 2025 period + // 2025Nov (November 2024 to October 2025) is a 2024 period expect( sourceOf({ periodType: 'FinancialNov', period: '20251101' }) - ).toMatchObject({ startDate: '2024-11-01' }) + ).toBeNull() + expect( + sourceOf({ periodType: 'FinancialNov', period: '2025W1' }) + ).toBeNull() + expect( + sourceOf({ + periodType: 'FinancialNov', + period: '20251101', + years: [2024, 2025], + }) + ).toMatchObject({ id: '2025Nov' }) + }) + + it('counts weeks by the year in their id, and bi-weeks by their start', () => { + // 2026W1 starts on 29 December 2025: a 2026 period + expect( + sourceOf({ + periodType: 'Weekly', + period: '20260105', + years: [2026], + }) + ).toMatchObject({ id: '2026W1' }) + // 2026BiW1 starts on the same day: a 2025 period + expect( + sourceOf({ + periodType: 'BiWeekly', + period: '20260112', + years: [2026], + }) + ).toBeNull() + expect( + sourceOf({ + periodType: 'BiWeekly', + period: '20260112', + years: [2025, 2026], + }) + ).toMatchObject({ id: '2026BiW1' }) }) it('skips years the request does not touch', () => { diff --git a/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js b/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js index 7a67c6752..103336e1f 100644 --- a/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/multiCalendarPatches.spec.js @@ -1,7 +1,6 @@ import { getNovemberPeriodByDate, getNovemberPeriodDates, - getPeriodIdYear, isNovemberPeriodId, isNovemberPeriodType, } from '../multiCalendarPatches.js' @@ -36,14 +35,4 @@ describe('multiCalendarPatches', () => { ])('finds the %s period holding %s: %s', (periodType, date, id) => { expect(getNovemberPeriodByDate(periodType, date).id).toBe(id) }) - - it('gives the year in a period id, the end year for November types', () => { - const novemberQuarter = getNovemberPeriodByDate( - 'QuarterlyNov', - '2024-12-15' - ) - - expect(getPeriodIdYear(novemberQuarter, 'QuarterlyNov')).toBe(2025) - expect(getPeriodIdYear({ id: '2024W52' }, 'Weekly')).toBe(2024) - }) }) diff --git a/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js b/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js index 25acd38d0..817cc105d 100644 --- a/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js +++ b/src/modules/dataItemProfile/periods/__tests__/relativePeriodRanges.spec.js @@ -58,7 +58,7 @@ describe('getRelativePeriodFixedPeriods', () => { const weeks = idsOf('WEEKS_THIS_YEAR', 'Weekly') expect(weeks[0]).toBe('2025W1') - expect(weeks[weeks.length - 1]).toBe('2025W52') + expect(weeks.at(-1)).toBe('2025W52') }) it('resolves the type a setting gives', () => { diff --git a/src/modules/dataItemProfile/periods/firstLastValues.js b/src/modules/dataItemProfile/periods/firstLastValues.js index 5c2cc0778..5f9097ba9 100644 --- a/src/modules/dataItemProfile/periods/firstLastValues.js +++ b/src/modules/dataItemProfile/periods/firstLastValues.js @@ -1,7 +1,6 @@ import { PERIOD_AGGREGATION_FIRST } from '../constants.js' -import { getYear, pad, shiftDate } from './calendarDates.js' +import { getYear, pad } from './calendarDates.js' import { memoize } from './memoize.js' -import { getPeriodIdYear } from './multiCalendarPatches.js' import { getFixedPeriodOfTypeByDate, getNextPeriod, @@ -10,10 +9,18 @@ import { /* How analytics answers FIRST and LAST data (checked by the test tool on 2.40 * to 2.44): a data period counts when it ended by the end of the period asked - * for, and the year in its id is one of the calendar years the request's - * periods touch. FIRST takes the earliest that counts, LAST the latest; none - * gives no value. So FIRST in July gives January's value, and LAST on - * 1 January gives nothing. */ + * for, and its year is one of the calendar years the request's periods touch. + * FIRST takes the earliest that counts, LAST the latest; none gives no value. + * So FIRST in July gives January's value, and LAST on 1 January gives + * nothing. */ + +/* A data period's year is the year it starts in, except for weeks: the year + * in the id. 2025W1, from 30 December 2024, is a 2025 period, but 2025BiW1, + * from the same day, and 2025NovQ1, from November 2024, are 2024 periods. */ +const getDataPeriodYear = (period, periodType) => + periodType.startsWith('Weekly') + ? Number(period.id.slice(0, 4)) + : getYear(period.startDate) // Enough to reach the last periods of the next year in the request, after a jump const MAX_STEPS = 20 @@ -28,38 +35,42 @@ const getLastPeriodEndingBy = (periodType, date, calendar) => { return getPreviousPeriod(periodType, holding, calendar) } -const getLatestCounting = ({ periodType, dates, years, calendar }) => { - let date = dates.endDate +/* Over a gap in the years, jump to the period holding 1 January after the + * highest year left: it, or the one before it, starts in that year. Periods + * of one type don't overlap, so one that starts earlier also ended by then. */ +const getPeriodBefore = (period, { periodType, highestYear, calendar }) => { + const jumped = getFixedPeriodOfTypeByDate( + periodType, + `${pad(highestYear + 1, 4)}-01-01`, + calendar + ) - for (let step = 0; step < MAX_STEPS; step++) { - const period = getLastPeriodEndingBy(periodType, date, calendar) + return jumped && jumped.startDate < period.startDate + ? jumped + : getPreviousPeriod(periodType, period, calendar) +} - if (!period) { - return null - } +const getLatestCounting = ({ periodType, dates, years, calendar }) => { + let period = getLastPeriodEndingBy(periodType, dates.endDate, calendar) - const idYear = getPeriodIdYear(period, periodType) + for (let step = 0; period && step < MAX_STEPS; step++) { + const year = getDataPeriodYear(period, periodType) - if (years.includes(idYear)) { + if (years.includes(year)) { return period } - const lowerYears = years.filter((year) => year < idYear) + const lowerYears = years.filter((otherYear) => otherYear < year) if (!lowerYears.length) { return null } - /* Jump to just after the highest year left: its last periods end by - * then (a week of that year can end in early January) */ - const afterYear = `${pad(Math.max(...lowerYears) + 1, 4)}-01-07` - const before = shiftDate(period.startDate, -1, calendar) - - if (!before) { - return null - } - - date = afterYear < before ? afterYear : before + period = getPeriodBefore(period, { + periodType, + highestYear: Math.max(...lowerYears), + calendar, + }) } return null @@ -74,7 +85,7 @@ const getEarliestCounting = ({ periodType, dates, years, calendar }) => { ) for (let step = 0; period && step < MAX_STEPS; step++) { - if (getPeriodIdYear(period, periodType) >= firstYear) { + if (getDataPeriodYear(period, periodType) >= firstYear) { return period.endDate <= dates.endDate ? period : null } diff --git a/src/modules/dataItemProfile/periods/multiCalendarPatches.js b/src/modules/dataItemProfile/periods/multiCalendarPatches.js index 5d5333c92..cb5fb6e98 100644 --- a/src/modules/dataItemProfile/periods/multiCalendarPatches.js +++ b/src/modules/dataItemProfile/periods/multiCalendarPatches.js @@ -1,4 +1,4 @@ -import { formatDate, getYear } from './calendarDates.js' +import { formatDate } from './calendarDates.js' /* Workarounds for multi-calendar-dates 1.3.2, to remove once it is fixed * upstream. November period types name the year they end in: 2025Nov is @@ -56,9 +56,3 @@ export const getNovemberPeriodByDate = (periodType, date) => { return { id, ...getNovemberPeriodDates(id) } } - -// The year in a period's id: the year November periods end in -export const getPeriodIdYear = (period, periodType) => - isNovemberPeriodType(periodType) - ? getYear(period.endDate) - : Number(period.id.slice(0, 4)) diff --git a/src/modules/dataItemProfile/periods/relativePeriodRanges.js b/src/modules/dataItemProfile/periods/relativePeriodRanges.js index 2a0c875bf..654c641ee 100644 --- a/src/modules/dataItemProfile/periods/relativePeriodRanges.js +++ b/src/modules/dataItemProfile/periods/relativePeriodRanges.js @@ -72,15 +72,8 @@ const resolveRelativePeriod = memoize( const periods = [first] - while ( - periods[periods.length - 1].id !== last.id && - periods.length < MAX_PERIODS - ) { - const next = getNextPeriod( - periodType, - periods[periods.length - 1], - calendar - ) + while (periods.at(-1).id !== last.id && periods.length < MAX_PERIODS) { + const next = getNextPeriod(periodType, periods.at(-1), calendar) if (!next) { return null From 85ded0e5451ca06e0b2a2f2b551bd59d330063ea Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Thu, 8 Oct 2026 12:37:36 +0200 Subject: [PATCH 5/7] feat: judge periods at org units, and fetch org unit data once --- src/__demo__/DataItemProfile.stories.js | 367 +++++++++++------- .../DataItemProfileTypicalUse.stories.js | 34 +- .../__tests__/coverageCounts.spec.js | 74 ++++ .../fetchDataItemProfileMetadata.spec.js | 84 +--- .../__tests__/fetchOrgUnitCoverage.spec.js | 100 ++++- .../__tests__/metadataQueries.spec.js | 62 +++ .../__tests__/orgUnitGroupCounts.spec.js | 11 +- src/api/dataItemProfile/coverageCounts.js | 79 ++++ .../fetchDataItemProfileMetadata.js | 98 ++--- .../dataItemProfile/fetchOrgUnitCoverage.js | 292 +++++--------- src/api/dataItemProfile/metadataQueries.js | 29 +- src/api/dataItemProfile/orgUnitGroupCounts.js | 18 +- src/api/dataItemProfile/orgUnitListCounts.js | 67 ++++ src/api/dataItemProfile/selectionOrgUnits.js | 75 ++++ .../__tests__/useDataItemProfiles.spec.js | 99 ++--- .../DataItemProfile/useDataItemProfiles.js | 28 +- src/index.js | 1 + .../__tests__/expressionOperands.spec.js | 15 +- .../__tests__/getDataItemProfile.spec.js | 83 ++++ .../getDataItemProfileCompatibility.spec.js | 17 + .../__tests__/orgUnitFixtures.spec.js | 7 +- .../__tests__/periodFixtures.spec.js | 76 +++- ...ataItemProfileOrgUnitCompatibility.spec.js | 27 ++ .../__tests__/periodAtOrgUnitResults.spec.js | 88 +++++ .../getDataItemProfileOrgUnitCompatibility.js | 91 +++-- .../getDataItemProfilePeriodCompatibility.js | 65 +++- .../compatibility/orgUnitSourceResults.js | 60 +-- .../compatibility/periodAtOrgUnitResults.js | 143 +++++++ .../compatibility/periodSourceResults.js | 28 +- .../dataItemProfile/expressionOperands.js | 10 + .../dataItemProfile/getDataItemProfile.js | 14 +- .../getDataItemProfileCompatibility.js | 31 +- .../dataItemProfile/profile/collectSources.js | 28 +- 33 files changed, 1616 insertions(+), 685 deletions(-) create mode 100644 src/api/dataItemProfile/__tests__/coverageCounts.spec.js create mode 100644 src/api/dataItemProfile/coverageCounts.js create mode 100644 src/api/dataItemProfile/selectionOrgUnits.js create mode 100644 src/modules/dataItemProfile/compatibility/__tests__/periodAtOrgUnitResults.spec.js create mode 100644 src/modules/dataItemProfile/compatibility/periodAtOrgUnitResults.js diff --git a/src/__demo__/DataItemProfile.stories.js b/src/__demo__/DataItemProfile.stories.js index e32be0be1..8ac1d72e3 100644 --- a/src/__demo__/DataItemProfile.stories.js +++ b/src/__demo__/DataItemProfile.stories.js @@ -1,4 +1,4 @@ -import { Button, InputField } from '@dhis2/ui' +import { Button, Checkbox, InputField } from '@dhis2/ui' import PropTypes from 'prop-types' import React, { useMemo, useState } from 'react' import { useDataItemProfiles } from '../components/DataItemProfile/useDataItemProfiles.js' @@ -28,6 +28,17 @@ export default { decorators: [Wrapper], } +// The status table with one example column: periods or org units +const statusReference = (exampleColumn, exampleIndex) => ({ + title: 'Compatibility statuses', + columns: ['Status', 'Meaning', exampleColumn], + rows: STATUS_DEFINITIONS.map(([status, meaning, ...examples]) => [ + status, + meaning, + examples[exampleIndex], + ]), +}) + // Event data comes from programs: it is placed in any period by its dates const isPlacedByDate = (profile) => !profile.unknown && profile.sources.every(({ program }) => program) @@ -42,15 +53,32 @@ const describePeriodTypes = (profile) => { return listWithSeveral(assignedPeriodTypes, assignedPeriodTypes.types) } - return isPlacedByDate(profile) ? 'event dates' : 'unknown' + return isPlacedByDate(profile) ? 'Event dates' : 'Unknown' +} + +const describeShortestDirectType = (profile) => { + if (profile.assignedPeriodTypes.shortestDirectType) { + return profile.assignedPeriodTypes.shortestDirectType + } + + return isPlacedByDate(profile) ? 'Any' : 'Unknown' } -// How many org units at the deepest level assigned the data sets are assigned to +// The levels its data sets and programs are assigned at, deepest first +const describeLevels = ({ assignedOrgUnitLevels }) => + assignedOrgUnitLevels?.levels.length + ? listWithSeveral(assignedOrgUnitLevels, assignedOrgUnitLevels.levels) + : '–' + +/* How many org units at the deepest level assigned the data sets are + * assigned to, of how many when the coverage counted them */ const Assignment = ({ assignment }) => assignment ? (
- {assignment.assigned.toLocaleString('en')} of{' '} - {assignment.total.toLocaleString('en')} at level {assignment.level} + {assignment.assigned.toLocaleString('en')} + {assignment.total !== undefined && + ` of ${assignment.total.toLocaleString('en')}`}{' '} + at level {assignment.level} +

+) + +AloneNote.propTypes = { children: PropTypes.node } + +const PERIOD_EXAMPLES = 0 +const ORG_UNIT_EXAMPLES = 1 + +export const Periods = () => { + const [periodsText, setPeriodsText] = useState( + '2025W2, 202501, 2025Q1, 2025, LAST_12_MONTHS, LAST_4_WEEKS, Weekly' + ) + const periods = useMemo(() => splitList(periodsText), [periodsText]) + // No org units: periods need no request beyond the metadata + const { + loading, + error, + profiles, + relativePeriodTypes, + getDataItemCompatibility, + } = useDataItemProfiles(ITEMS) + + return ( +
+ {tableStyle} + + +
+ setPeriodsText(value)} + inputWidth="600px" + /> +
+ {loading && } + {error && } + {profiles && ( + <> + + Each period is judged alone, over all the item’s data + sets and programs, whatever the org units: where they + are assigned isn’t read here. Relative weeks:{' '} + {relativePeriodTypes.weeklyPeriodType ?? 'unknown'}. + Relative financial years:{' '} + {relativePeriodTypes.financialYearPeriodType ?? + 'unknown'} + . + +
+ + + + + {periods.length > 0 && ( + + )} + + + + + + {periods.map((period) => ( + + ))} + + + + {ITEMS.map(({ id, name }) => { + const profile = profiles[id] + const { periods: results } = + getDataItemCompatibility(id, { periods }) - return isPlacedByDate(profile) ? 'any' : 'unknown' + return ( + + + + + {results.map((result) => ( + + ))} + + ) + })} + +
Item + Profile getDataItemProfile + + Each period{' '} + getDataItemCompatibility +
JSONPeriod typesShortest direct type{period}
{describePeriodTypes(profile)} + {describeShortestDirectType( + profile + )} + + +
+ + )} + + ) } +Periods.storyName = 'Periods' + // Org unit selections to try, one per kind of selection item const ORG_UNIT_SCENARIOS = [ [ @@ -88,11 +268,7 @@ const ORG_UNIT_SCENARIOS = [ ['Clinic group in Bo', `${BO}, OU_GROUP-RXL3lPSK8oG`], ] -export const ProfilesAndCompatibility = () => { - const [periodsText, setPeriodsText] = useState( - '2025W2, 202501, 2025Q1, 2025, LAST_12_MONTHS, LAST_4_WEEKS, Weekly' - ) - const periods = useMemo(() => splitList(periodsText), [periodsText]) +export const OrgUnits = () => { // Typed org units apply on blur: each change sends requests const [orgUnitsText, setOrgUnitsText] = useState(ORG_UNIT_SCENARIOS[0][1]) const [orgUnitsDraft, setOrgUnitsDraft] = useState(orgUnitsText) @@ -104,41 +280,23 @@ export const ProfilesAndCompatibility = () => { const orgUnitItems = readOrgUnitSelection(orgUnits).selectionItems.map( ({ id }) => id ) - const { - loading, - error, - profiles, - relativePeriodTypes, - getDataItemCompatibility, - } = useDataItemProfiles(ITEMS, { orgUnits }) + const [withAssignmentTotals, setWithAssignmentTotals] = useState(false) + const { loading, error, profiles, getDataItemCompatibility } = + useDataItemProfiles(ITEMS, { orgUnits, withAssignmentTotals }) return (
{tableStyle} { ]} /> -
- setPeriodsText(value)} - inputWidth="600px" - /> -
-
+
{ ))}
+ setWithAssignmentTotals(checked)} + dense + />