@uk-open-data-connectors/uk-sources 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +110 -192
- package/dist/ancientWoodland.d.ts.map +1 -1
- package/dist/ancientWoodland.js +2 -4
- package/dist/ancientWoodland.js.map +1 -1
- package/dist/apiKey.d.ts +11 -0
- package/dist/apiKey.d.ts.map +1 -0
- package/dist/apiKey.js +17 -0
- package/dist/apiKey.js.map +1 -0
- package/dist/bankRate.d.ts.map +1 -1
- package/dist/bankRate.js +3 -5
- package/dist/bankRate.js.map +1 -1
- package/dist/carbonIntensity.d.ts +4 -1
- package/dist/carbonIntensity.d.ts.map +1 -1
- package/dist/carbonIntensity.js +6 -2
- package/dist/carbonIntensity.js.map +1 -1
- package/dist/errors.d.ts +12 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -4
- package/dist/errors.js.map +1 -1
- package/dist/exploreEducationStatistics.d.ts +72 -0
- package/dist/exploreEducationStatistics.d.ts.map +1 -0
- package/dist/exploreEducationStatistics.js +108 -0
- package/dist/exploreEducationStatistics.js.map +1 -0
- package/dist/findATender.d.ts +76 -0
- package/dist/findATender.d.ts.map +1 -0
- package/dist/findATender.js +107 -0
- package/dist/findATender.js.map +1 -0
- package/dist/fingertipsIndicators.d.ts +67 -0
- package/dist/fingertipsIndicators.d.ts.map +1 -0
- package/dist/fingertipsIndicators.js +92 -0
- package/dist/fingertipsIndicators.js.map +1 -0
- package/dist/floodMonitoring.d.ts.map +1 -1
- package/dist/floodMonitoring.js +4 -9
- package/dist/floodMonitoring.js.map +1 -1
- package/dist/foodHygiene.d.ts.map +1 -1
- package/dist/foodHygiene.js +4 -5
- package/dist/foodHygiene.js.map +1 -1
- package/dist/http.d.ts +34 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +83 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/dist/londonDatastore.d.ts +46 -0
- package/dist/londonDatastore.d.ts.map +1 -0
- package/dist/londonDatastore.js +64 -0
- package/dist/londonDatastore.js.map +1 -0
- package/dist/nesoGenerationMix.d.ts +128 -0
- package/dist/nesoGenerationMix.d.ts.map +1 -0
- package/dist/nesoGenerationMix.js +241 -0
- package/dist/nesoGenerationMix.js.map +1 -0
- package/dist/nhsbsaCkan.d.ts +43 -0
- package/dist/nhsbsaCkan.d.ts.map +1 -0
- package/dist/nhsbsaCkan.js +59 -0
- package/dist/nhsbsaCkan.js.map +1 -0
- package/dist/nomis.d.ts +71 -0
- package/dist/nomis.d.ts.map +1 -0
- package/dist/nomis.js +124 -0
- package/dist/nomis.js.map +1 -0
- package/dist/onsDatasets.d.ts.map +1 -1
- package/dist/onsDatasets.js +3 -5
- package/dist/onsDatasets.js.map +1 -1
- package/dist/parliamentSeats.d.ts.map +1 -1
- package/dist/parliamentSeats.js +6 -5
- package/dist/parliamentSeats.js.map +1 -1
- package/dist/planningDatasets.d.ts.map +1 -1
- package/dist/planningDatasets.js +3 -5
- package/dist/planningDatasets.js.map +1 -1
- package/dist/policeCrimes.d.ts.map +1 -1
- package/dist/policeCrimes.js +5 -8
- package/dist/policeCrimes.js.map +1 -1
- package/dist/postcodeLookup.d.ts +55 -0
- package/dist/postcodeLookup.d.ts.map +1 -0
- package/dist/postcodeLookup.js +89 -0
- package/dist/postcodeLookup.js.map +1 -0
- package/dist/publicHealthScotland.d.ts +43 -0
- package/dist/publicHealthScotland.d.ts.map +1 -0
- package/dist/publicHealthScotland.js +59 -0
- package/dist/publicHealthScotland.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +24 -0
- package/dist/registry.js.map +1 -1
- package/dist/tflBikePoints.d.ts.map +1 -1
- package/dist/tflBikePoints.js +6 -6
- package/dist/tflBikePoints.js.map +1 -1
- package/dist/tflLineStatus.d.ts +59 -0
- package/dist/tflLineStatus.d.ts.map +1 -0
- package/dist/tflLineStatus.js +91 -0
- package/dist/tflLineStatus.js.map +1 -0
- package/dist/tnaDiscovery.d.ts +76 -0
- package/dist/tnaDiscovery.d.ts.map +1 -0
- package/dist/tnaDiscovery.js +100 -0
- package/dist/tnaDiscovery.js.map +1 -0
- package/dist/ukhsaDashboard.d.ts +92 -0
- package/dist/ukhsaDashboard.d.ts.map +1 -0
- package/dist/ukhsaDashboard.js +134 -0
- package/dist/ukhsaDashboard.js.map +1 -0
- package/package.json +13 -4
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
4
|
+
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
/**
|
|
6
|
+
* The UK Health Security Agency data dashboard API. Keyless, published under
|
|
7
|
+
* the Open Government Licence v3.
|
|
8
|
+
*/
|
|
9
|
+
export const UKHSA_DASHBOARD_SOURCE_ID = 'ukhsa-dashboard';
|
|
10
|
+
/** Root of the UKHSA data dashboard API. */
|
|
11
|
+
export const UKHSA_DASHBOARD_API_BASE_URL = 'https://api.ukhsa-dashboard.data.gov.uk';
|
|
12
|
+
/**
|
|
13
|
+
* The metric the adapter reads: new HIV diagnoses in England, a country-level
|
|
14
|
+
* annual series the dashboard publishes with real counts.
|
|
15
|
+
*/
|
|
16
|
+
export const UKHSA_DASHBOARD_METRIC_PATH = '/themes/infectious_disease/sub_themes/bloodborne/topics/HIV' +
|
|
17
|
+
'/geography_types/Nation/geographies/England/metrics/HIV_cases_newDiagnoses';
|
|
18
|
+
/** How many metric points the adapter asks for per page by default. */
|
|
19
|
+
export const UKHSA_DASHBOARD_PAGE_SIZE = 10;
|
|
20
|
+
const UKHSA_METRIC_POINT_SCHEMA = z.object({
|
|
21
|
+
theme: z.string(),
|
|
22
|
+
sub_theme: z.string(),
|
|
23
|
+
topic: z.string(),
|
|
24
|
+
geography_type: z.string(),
|
|
25
|
+
geography: z.string(),
|
|
26
|
+
geography_code: z.string().nullable().optional(),
|
|
27
|
+
metric: z.string(),
|
|
28
|
+
metric_group: z.string().nullable().optional(),
|
|
29
|
+
stratum: z.string().nullable().optional(),
|
|
30
|
+
sex: z.string(),
|
|
31
|
+
age: z.string(),
|
|
32
|
+
year: z.number(),
|
|
33
|
+
month: z.number().nullable().optional(),
|
|
34
|
+
epiweek: z.number().nullable().optional(),
|
|
35
|
+
date: z.string(),
|
|
36
|
+
metric_value: z.number().nullable().optional(),
|
|
37
|
+
in_reporting_delay_period: z.boolean(),
|
|
38
|
+
});
|
|
39
|
+
const UKHSA_METRIC_PAGE_SCHEMA = z.object({
|
|
40
|
+
count: z.number(),
|
|
41
|
+
results: z.array(UKHSA_METRIC_POINT_SCHEMA),
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Builds the metric URL for one page size.
|
|
45
|
+
*
|
|
46
|
+
* @param pageSize - how many metric points to ask for
|
|
47
|
+
* @returns the metric endpoint URL
|
|
48
|
+
*/
|
|
49
|
+
export function buildUkhsaMetricUrl(pageSize) {
|
|
50
|
+
return `${UKHSA_DASHBOARD_API_BASE_URL}${UKHSA_DASHBOARD_METRIC_PATH}?page_size=${pageSize}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Parses a UKHSA dashboard metric payload.
|
|
54
|
+
*
|
|
55
|
+
* @param payload - the raw JSON body from the metric endpoint
|
|
56
|
+
* @returns the page of metric points plus the API's total count
|
|
57
|
+
*/
|
|
58
|
+
export function parseUkhsaMetricPoints(payload) {
|
|
59
|
+
const parsed = UKHSA_METRIC_PAGE_SCHEMA.safeParse(payload);
|
|
60
|
+
if (!parsed.success) {
|
|
61
|
+
throw new UkSourceParseError('ukhsa-dashboard', parsed.error.message);
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
totalCount: parsed.data.count,
|
|
65
|
+
points: parsed.data.results.map((point) => ({
|
|
66
|
+
theme: point.theme,
|
|
67
|
+
subTheme: point.sub_theme,
|
|
68
|
+
topic: point.topic,
|
|
69
|
+
geographyType: point.geography_type,
|
|
70
|
+
geography: point.geography,
|
|
71
|
+
geographyCode: point.geography_code ?? '',
|
|
72
|
+
metric: point.metric,
|
|
73
|
+
metricGroup: point.metric_group ?? '',
|
|
74
|
+
stratum: point.stratum ?? '',
|
|
75
|
+
sex: point.sex,
|
|
76
|
+
age: point.age,
|
|
77
|
+
year: point.year,
|
|
78
|
+
month: point.month ?? null,
|
|
79
|
+
epiweek: point.epiweek ?? null,
|
|
80
|
+
date: point.date,
|
|
81
|
+
metricValue: point.metric_value ?? null,
|
|
82
|
+
inReportingDelayPeriod: point.in_reporting_delay_period,
|
|
83
|
+
})),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sums one page of UKHSA metric points.
|
|
88
|
+
*
|
|
89
|
+
* @param page - a page from {@link parseUkhsaMetricPoints}
|
|
90
|
+
* @returns point counts, the date range on the page, and the latest value
|
|
91
|
+
*/
|
|
92
|
+
export function summarizeUkhsaMetricPoints(page) {
|
|
93
|
+
let firstDate = '';
|
|
94
|
+
let lastDate = '';
|
|
95
|
+
let latestValue = null;
|
|
96
|
+
for (const point of page.points) {
|
|
97
|
+
if (firstDate === '' || point.date < firstDate) {
|
|
98
|
+
firstDate = point.date;
|
|
99
|
+
}
|
|
100
|
+
if (point.date >= lastDate) {
|
|
101
|
+
lastDate = point.date;
|
|
102
|
+
latestValue = point.metricValue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
pointCount: page.points.length,
|
|
107
|
+
totalCount: page.totalCount,
|
|
108
|
+
firstDate,
|
|
109
|
+
lastDate,
|
|
110
|
+
latestValue,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Reads one page of UKHSA dashboard metric points.
|
|
115
|
+
*
|
|
116
|
+
* @param options - page size and an optional fetch implementation
|
|
117
|
+
* @returns the page of metric points the endpoint returns
|
|
118
|
+
*/
|
|
119
|
+
export async function fetchUkhsaMetricPoints(options = {}) {
|
|
120
|
+
const { pageSize = UKHSA_DASHBOARD_PAGE_SIZE, fetchImpl = globalThis.fetch } = options;
|
|
121
|
+
const response = await httpGet('ukhsa-dashboard', buildUkhsaMetricUrl(pageSize), { fetchImpl });
|
|
122
|
+
return parseUkhsaMetricPoints(await response.json());
|
|
123
|
+
}
|
|
124
|
+
/** UK Health Security Agency data dashboard metric points, keyless. */
|
|
125
|
+
export const ukhsaDashboardAdapter = {
|
|
126
|
+
id: UKHSA_DASHBOARD_SOURCE_ID,
|
|
127
|
+
name: 'UK Health Security Agency data dashboard',
|
|
128
|
+
auth: 'none',
|
|
129
|
+
description: 'New HIV diagnoses in England, as annual counts from the UKHSA dashboard.',
|
|
130
|
+
fetchLive: (options) => fetchUkhsaMetricPoints(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
131
|
+
parse: parseUkhsaMetricPoints,
|
|
132
|
+
loadFixture: () => parseUkhsaMetricPoints(readFixtureJson('ukhsa-dashboard-2026-10-05.json')),
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=ukhsaDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ukhsaDashboard.js","sourceRoot":"","sources":["../src/ukhsaDashboard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uk-open-data-connectors/uk-sources",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@uk-open-data-connectors/config-eslint": "*",
|
|
33
33
|
"@uk-open-data-connectors/config-typescript": "*",
|
|
34
|
-
"@types/node": "22.20.
|
|
34
|
+
"@types/node": "22.20.5",
|
|
35
35
|
"eslint": "9.39.5",
|
|
36
36
|
"typescript": "6.0.3",
|
|
37
|
-
"vitest": "
|
|
37
|
+
"vitest": "5.0.3"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"zod": "3.25.76"
|
|
@@ -42,5 +42,14 @@
|
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
|
-
"description": "Uniform TypeScript adapters for UK public data sources"
|
|
45
|
+
"description": "Uniform TypeScript adapters for UK public data sources",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/olitreadwell/uk-open-data-connectors.git"
|
|
50
|
+
},
|
|
51
|
+
"homepage": "https://github.com/olitreadwell/uk-open-data-connectors#readme",
|
|
52
|
+
"bugs": {
|
|
53
|
+
"url": "https://github.com/olitreadwell/uk-open-data-connectors/issues"
|
|
54
|
+
}
|
|
46
55
|
}
|