@geoalgeria/sante 1.0.0 → 2.0.0
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/README.ar.md +36 -22
- package/README.fr.md +38 -24
- package/README.md +46 -32
- package/data/csv/sante.csv +696 -696
- package/data/geojson/sante.geojson +8532 -7807
- package/data/metadata.json +58 -19
- package/data/sante.json +9308 -9878
- package/dataset-metadata.json +52 -0
- package/package.json +3 -2
- package/types/index.d.ts +83 -55
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "Dataset",
|
|
4
|
+
"name": "Algeria public health establishments",
|
|
5
|
+
"alternateName": "Établissements de santé publique d'Algérie",
|
|
6
|
+
"identifier": "@geoalgeria/sante",
|
|
7
|
+
"description": "Public health establishments (EPH/EPSP/EHS/CHU) from the Ministry of Health registry. Coordinates layered on via OSM/Wikidata; where no point was found the commune centroid is used (approximate) and 95 remain ungeocoded.",
|
|
8
|
+
"conditionsOfAccess": "Official registry (Ministry of Health); geocoding ODbL/CC0",
|
|
9
|
+
"isAccessibleForFree": true,
|
|
10
|
+
"creator": {
|
|
11
|
+
"@type": "Organization",
|
|
12
|
+
"name": "Yasser's Studio",
|
|
13
|
+
"url": "https://yasser.studio"
|
|
14
|
+
},
|
|
15
|
+
"spatialCoverage": {
|
|
16
|
+
"@type": "Place",
|
|
17
|
+
"name": "Algeria",
|
|
18
|
+
"geo": {
|
|
19
|
+
"@type": "GeoShape",
|
|
20
|
+
"box": "19.573539 -8.140085 37.0072 9.635"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"variableMeasured": "695 records, 58 wilayas",
|
|
24
|
+
"distribution": [
|
|
25
|
+
{
|
|
26
|
+
"@type": "DataDownload",
|
|
27
|
+
"name": "sante (JSON)",
|
|
28
|
+
"encodingFormat": "application/json",
|
|
29
|
+
"contentUrl": "https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/sante.json"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@type": "DataDownload",
|
|
33
|
+
"name": "sante (CSV)",
|
|
34
|
+
"encodingFormat": "text/csv",
|
|
35
|
+
"contentUrl": "https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/csv/sante.csv"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"@type": "DataDownload",
|
|
39
|
+
"name": "sante (GeoJSON)",
|
|
40
|
+
"encodingFormat": "application/geo+json",
|
|
41
|
+
"contentUrl": "https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/geojson/sante.geojson"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"dateModified": "2026-06-27",
|
|
45
|
+
"url": "https://geoalgeria.com",
|
|
46
|
+
"sameAs": "https://github.com/yasserstudio/geoalgeria",
|
|
47
|
+
"citation": [
|
|
48
|
+
"Ministry of Health (sante.gov.dz) — health-establishment registry — Official public registry (Ministry of Health)",
|
|
49
|
+
"OpenStreetMap — geocoding — ODbL 1.0 (© OpenStreetMap contributors)",
|
|
50
|
+
"Wikidata — geocoding — CC0-1.0"
|
|
51
|
+
]
|
|
52
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoalgeria/sante",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Public health establishments of Algeria — hospitals (EPH), proximity health (EPSP), specialized hospitals (EHS) and university hospitals (CHU) from the
|
|
5
|
+
"description": "Public health establishments of Algeria — hospitals (EPH), proximity health (EPSP), specialized hospitals (EHS) and university hospitals (CHU) from the Ministry of Health, bilingual FR/AR, geocoded via OpenStreetMap & Wikidata, with commune/wilaya linkage. JSON, CSV, GeoJSON, TypeScript.",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"types": "types/index.d.ts",
|
|
8
8
|
"exports": {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"./data/*": "./data/*"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
+
"dataset-metadata.json",
|
|
16
17
|
"data/**/*.json",
|
|
17
18
|
"data/**/*.csv",
|
|
18
19
|
"data/**/*.geojson",
|
package/types/index.d.ts
CHANGED
|
@@ -1,89 +1,117 @@
|
|
|
1
|
-
// Type definitions for @geoalgeria/sante
|
|
2
|
-
// Public health establishments of Algeria — the
|
|
1
|
+
// Type definitions for @geoalgeria/sante (schema v2).
|
|
2
|
+
// Public health establishments of Algeria — the Ministry of Health (MoH)
|
|
3
3
|
// registry, geocoded via OpenStreetMap (ODbL) and Wikidata (CC0).
|
|
4
|
+
// Records follow the canonical GeoRecord contract from @geoalgeria/schema
|
|
5
|
+
// (zero-padded string wilaya_code, string ONS commune_code, geo_precision/
|
|
6
|
+
// geo_method/source/refs) plus the health-specific fields below.
|
|
4
7
|
|
|
5
8
|
/** Establishment category. */
|
|
6
9
|
export type HealthType = "eph" | "epsp" | "ehs" | "chu" | "clinique" | "hopital";
|
|
7
10
|
|
|
8
|
-
/** Ownership sector. The
|
|
11
|
+
/** Ownership sector. The MoH registry is public; private clinics carry "private". */
|
|
9
12
|
export type HealthSector = "public" | "private";
|
|
10
13
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
| "msp+osm"
|
|
15
|
-
| "msp+wikidata"
|
|
16
|
-
| "msp+osm+wikidata";
|
|
14
|
+
/** Coordinate provenance, coarse-grained. Detail lives in `geo_method`.
|
|
15
|
+
* `null` when the establishment has no coordinate at all. */
|
|
16
|
+
export type GeoPrecision = "exact" | "approximate" | null;
|
|
17
17
|
|
|
18
|
-
/** How the
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
/** How the coordinate was obtained. `null` on an ungeocoded record — no method
|
|
19
|
+
* produced a point, so none can be named. */
|
|
20
|
+
export type GeoMethod = "osm_point" | "wikidata_point" | "commune_centroid" | null;
|
|
21
|
+
|
|
22
|
+
/** External identifiers keyed by source system. */
|
|
23
|
+
export interface Refs {
|
|
24
|
+
/** MoH post id on sante.gov.dz. */
|
|
25
|
+
msp: string;
|
|
26
|
+
/** OSM element id (e.g. "way/432370657") when an OSM facility matched. */
|
|
27
|
+
osm?: string;
|
|
28
|
+
/** Wikidata QID when a Wikidata facility matched. */
|
|
29
|
+
wikidata?: string;
|
|
30
|
+
}
|
|
24
31
|
|
|
25
32
|
/** A public health establishment. */
|
|
26
33
|
export interface HealthEstablishment {
|
|
27
|
-
/** Stable id, `{wilaya_code}-{type}-{seq}` (e.g. "22-eph-01"). */
|
|
34
|
+
/** Stable id, `{wilaya_code}-{type}-{seq}` (e.g. "22-eph-01"). Unique within this dataset. */
|
|
28
35
|
id: string;
|
|
29
36
|
/** Best available display name (French preferred, else Arabic). */
|
|
30
37
|
name: string;
|
|
31
|
-
/** Arabic name, or null. */
|
|
32
|
-
name_ar: string | null;
|
|
33
38
|
/** French name, or null. */
|
|
34
39
|
name_fr: string | null;
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
type_label_fr: string;
|
|
39
|
-
/** Canonical Arabic label for the type. */
|
|
40
|
-
type_label_ar: string;
|
|
41
|
-
/** Ownership sector ("public" for the MSP registry). */
|
|
42
|
-
sector: HealthSector;
|
|
43
|
-
/** Wilaya name (French). */
|
|
44
|
-
wilaya: string;
|
|
45
|
-
/** Wilaya name (Arabic). */
|
|
46
|
-
wilaya_ar: string;
|
|
47
|
-
/** Wilaya code as a zero-padded string ("01".."69"). */
|
|
40
|
+
/** Arabic name, or null. */
|
|
41
|
+
name_ar: string | null;
|
|
42
|
+
/** Wilaya code, zero-padded 2-digit string ("01".."69"). */
|
|
48
43
|
wilaya_code: string;
|
|
44
|
+
/** Commune (ONS) code as a 4-digit string, best-effort. Null when unresolved. */
|
|
45
|
+
commune_code: string | null;
|
|
49
46
|
/** Commune name (French), best-effort from the establishment locality. Null when unresolved. */
|
|
50
47
|
commune: string | null;
|
|
51
|
-
/** Commune code (geoalgeria code_commune), best-effort. Null when unresolved. */
|
|
52
|
-
commune_code: number | null;
|
|
53
48
|
/** Latitude, or null when the establishment could not be geocoded. */
|
|
54
49
|
lat: number | null;
|
|
55
|
-
/** Longitude, or null
|
|
50
|
+
/** Longitude, or null. Both coordinates are set, or both are null. */
|
|
56
51
|
lng: number | null;
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
/** How `lat`/`lng` were obtained. */
|
|
52
|
+
/** "exact" for an OSM/Wikidata point, "approximate" for a commune centroid,
|
|
53
|
+
* `null` when `lat`/`lng` are null — a record with no point asserts no precision. */
|
|
60
54
|
geo_precision: GeoPrecision;
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
/** How `lat`/`lng` were obtained; null when there are none. */
|
|
56
|
+
geo_method: GeoMethod;
|
|
57
|
+
/** Provenance key into `metadata.sources[]` — always "msp" (the MoH registry).
|
|
58
|
+
* The geocoding sources are named per record in {@link HealthEstablishment.refs}. */
|
|
59
|
+
source: "msp";
|
|
60
|
+
/** External identifiers: always the MoH post id, plus OSM/Wikidata where matched. */
|
|
61
|
+
refs: Refs;
|
|
62
|
+
/** Establishment category. */
|
|
63
|
+
type: HealthType;
|
|
64
|
+
/** Canonical French label for the type. */
|
|
65
|
+
type_label_fr: string;
|
|
66
|
+
/** Canonical Arabic label for the type. */
|
|
67
|
+
type_label_ar: string;
|
|
68
|
+
/** Ownership sector ("public" for the MoH registry). */
|
|
69
|
+
sector: HealthSector;
|
|
67
70
|
/** URL slug of the source post (French post preferred). */
|
|
68
71
|
slug: string;
|
|
69
72
|
}
|
|
70
73
|
|
|
71
|
-
/**
|
|
72
|
-
export interface
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
/** One provenance entry in `metadata.sources[]`. */
|
|
75
|
+
export interface SourceRef {
|
|
76
|
+
key: string;
|
|
77
|
+
name: string;
|
|
78
|
+
url?: string;
|
|
75
79
|
license: string;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
retrieved?: string;
|
|
81
|
+
evidence_type?: "official" | "crowdsourced" | "derived";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Dataset metadata (data/metadata.json) — canonical fields plus health stats. */
|
|
85
|
+
export interface Metadata {
|
|
86
|
+
package: "@geoalgeria/sante";
|
|
87
|
+
schema_version: string;
|
|
88
|
+
title_fr: string;
|
|
89
|
+
title_ar: string;
|
|
90
|
+
title_en: string;
|
|
91
|
+
record_count: number;
|
|
92
|
+
/** Records with coordinates. */
|
|
93
|
+
geocoded_count: number;
|
|
94
|
+
geocoded_pct: number;
|
|
95
|
+
/** Count by `geo_precision` among geocoded records; ungeocoded records carry none. */
|
|
96
|
+
precision: { exact: number; approximate: number };
|
|
97
|
+
estimated_universe: number | null;
|
|
98
|
+
coverage_pct: number | null;
|
|
99
|
+
coverage_note: string;
|
|
80
100
|
wilayas_covered: number;
|
|
81
|
-
geocoded
|
|
101
|
+
/** `[minLng, minLat, maxLng, maxLat]`, or null when nothing is geocoded. */
|
|
102
|
+
bbox: [number, number, number, number] | null;
|
|
103
|
+
sources: SourceRef[];
|
|
104
|
+
license: string;
|
|
105
|
+
/** ISO date (YYYY-MM-DD) the dataset was regenerated. */
|
|
106
|
+
updated: string;
|
|
107
|
+
/** Count by type; categories with no records are absent. */
|
|
108
|
+
by_type: Partial<Record<HealthType, number>>;
|
|
109
|
+
/** Count by sector; the MoH registry is public-only today. */
|
|
110
|
+
by_sector: Partial<Record<HealthSector, number>>;
|
|
111
|
+
/** Count by `geo_method`; ungeocoded records are absent (they have no method). */
|
|
112
|
+
by_geo_method: Partial<Record<Exclude<GeoMethod, null>, number>>;
|
|
82
113
|
bilingual: number;
|
|
83
114
|
linkage_note: string;
|
|
84
|
-
coverage_note: string;
|
|
85
|
-
/** ISO date (YYYY-MM-DD) the snapshot was generated. */
|
|
86
|
-
generated_at: string;
|
|
87
115
|
}
|
|
88
116
|
|
|
89
117
|
/** All public health establishments. */
|