@geoalgeria/sante 2.0.3 → 2.1.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 +35 -23
- package/README.fr.md +41 -25
- package/README.md +37 -24
- package/data/csv/sante.csv +669 -696
- package/data/geojson/sante.geojson +1981 -1473
- package/data/metadata.json +17 -16
- package/data/retired-ids.json +259 -0
- package/data/sante.json +1645 -1579
- package/dataset-metadata.json +3 -3
- package/package.json +1 -1
- package/types/index.d.ts +29 -4
package/README.ar.md
CHANGED
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
**
|
|
15
|
+
**668 مؤسسة صحية عمومية** عبر **58 ولاية** لها مديرية للصحة – المؤسسات العمومية
|
|
16
16
|
الاستشفائية (EPH)، ومؤسسات الصحة الجوارية (EPSP)، والمؤسسات الاستشفائية المتخصصة
|
|
17
17
|
(EHS)، والمراكز الاستشفائية الجامعية (CHU) من **وزارة الصحة (MSP)**، ثنائية اللغة
|
|
18
|
-
عربي/فرنسي، **
|
|
19
|
-
و
|
|
18
|
+
عربي/فرنسي، **597 منها بإحداثيات** (121 بنقطة دقيقة من OpenStreetMap/Wikidata،
|
|
19
|
+
و11 مُتحقَّق منها يدويًا، و465 بمركز ثقل البلدية) مع ربطٍ بالبلدية والولاية. متوفر بصيغ JSON وCSV
|
|
20
20
|
وGeoJSON وTypeScript. جزء من
|
|
21
21
|
[GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
|
|
22
22
|
|
|
23
23
|
> **الطبقة المجتمعية موجودة في [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques)، ولا يجوز جمع الاثنين أبدًا.**
|
|
24
24
|
> هذه الحزمة هي طبقة *السجل*: المؤسسات العمومية التي تسيّرها وزارة الصحة، سجل
|
|
25
|
-
> رسمي ومغلق. أما `cliniques` فهي الطبقة *المجتمعية*: 1,
|
|
25
|
+
> رسمي ومغلق. أما `cliniques` فهي الطبقة *المجتمعية*: 1,917 عيادة متعددة
|
|
26
26
|
> الخدمات وقاعة علاج ومركز صحي ومصحة توليد وعيادة، رسمها متطوعو OpenStreetMap،
|
|
27
27
|
> وهي جزئية بطبيعتها. كل عنصر OSM يشير إليه سجل من هنا مستبعَد هناك بحكم
|
|
28
28
|
> البناء، فلا يُنشر أي مكان مرتين تحت العنصر نفسه، لكن الاثنتين تصفان طبقتين
|
|
29
|
-
> مختلفتين من منظومة الصحة، وجمع
|
|
29
|
+
> مختلفتين من منظومة الصحة، وجمع 668 مع 1,917 لا يعدّ شيئًا حقيقيًا.
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
npm install @geoalgeria/sante
|
|
@@ -35,7 +35,7 @@ npm install @geoalgeria/sante
|
|
|
35
35
|
```js
|
|
36
36
|
import sante from "@geoalgeria/sante";
|
|
37
37
|
|
|
38
|
-
const all = sante.sante(); //
|
|
38
|
+
const all = sante.sante(); // 668 مؤسسة
|
|
39
39
|
|
|
40
40
|
// المستشفيات العمومية في ولاية (ربط بـ wilaya_code في GeoAlgeria)
|
|
41
41
|
const ephAlger = all.filter((e) => e.wilaya_code === "16" && e.type === "eph");
|
|
@@ -46,7 +46,7 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
46
46
|
|
|
47
47
|
## ما يمكنك بناؤه
|
|
48
48
|
|
|
49
|
-
- **أدلّة ومحدّدات مواقع المستشفيات والعيادات** – إحداثيات على
|
|
49
|
+
- **أدلّة ومحدّدات مواقع المستشفيات والعيادات** – إحداثيات على 597 من أصل 668
|
|
50
50
|
سجلًّا، جاهزة للخريطة أو للبحث عن الأقرب.
|
|
51
51
|
- **أدلّة صحية ثنائية اللغة** – أسماء عربية وفرنسية، والنوع الرسمي والولاية لكل
|
|
52
52
|
مؤسسة.
|
|
@@ -56,34 +56,35 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
56
56
|
|
|
57
57
|
| مجموعة البيانات | العدد | الإحداثيات | ملاحظات |
|
|
58
58
|
| --- | --- | --- | --- |
|
|
59
|
-
| المؤسسات الصحية | **
|
|
59
|
+
| المؤسسات الصحية | **668** | 597 بإحداثيات | 58 ولاية، 590 ثنائية اللغة |
|
|
60
60
|
|
|
61
61
|
**حسب النوع**
|
|
62
62
|
|
|
63
63
|
| النوع | العدد | المعنى |
|
|
64
64
|
| --- | --- | --- |
|
|
65
|
-
| `eph` |
|
|
66
|
-
| `epsp` |
|
|
67
|
-
| `ehs` |
|
|
68
|
-
| `chu` |
|
|
65
|
+
| `eph` | 257 | المؤسسة العمومية الاستشفائية |
|
|
66
|
+
| `epsp` | 284 | المؤسسة العمومية للصحة الجوارية |
|
|
67
|
+
| `ehs` | 103 | المؤسسة الاستشفائية المتخصصة |
|
|
68
|
+
| `chu` | 19 | المركز الاستشفائي الجامعي |
|
|
69
69
|
| `hopital` | 5 | مستشفى عمومي آخر |
|
|
70
70
|
|
|
71
71
|
**حسب دقّة الإحداثيات** (`geo_precision`)
|
|
72
72
|
|
|
73
73
|
| القيمة | العدد | المعنى |
|
|
74
74
|
| --- | --- | --- |
|
|
75
|
-
| `exact` |
|
|
76
|
-
| `approximate` |
|
|
77
|
-
| `null` |
|
|
75
|
+
| `exact` | 132 | نقطة دقيقة: مرفق في OSM أو Wikidata ضمن البلدية، أو موقع مُتحقَّق منه يدويًا |
|
|
76
|
+
| `approximate` | 465 | مركز ثقل بلدية المؤسسة |
|
|
77
|
+
| `null` | 71 | لم تُربط البلدية – بلا إحداثيات (`lat`/`lng` أيضًا `null`) |
|
|
78
78
|
|
|
79
79
|
**حسب طريقة الحصول على الإحداثية** (`geo_method`)
|
|
80
80
|
|
|
81
81
|
| القيمة | العدد | المعنى |
|
|
82
82
|
| --- | --- | --- |
|
|
83
|
-
| `osm_point` |
|
|
83
|
+
| `osm_point` | 118 | نقطة دقيقة من مرفق في OpenStreetMap ضمن البلدية |
|
|
84
84
|
| `wikidata_point` | 3 | نقطة دقيقة من مرفق في Wikidata ضمن البلدية |
|
|
85
|
-
| `commune_centroid` |
|
|
86
|
-
| `
|
|
85
|
+
| `commune_centroid` | 465 | مركز ثقل بلدية المؤسسة (تقريبي) |
|
|
86
|
+
| `owner_verified` | 11 | موقع قرأه مالك المشروع على الخريطة، عبر سجل التصحيحات المراجَعة |
|
|
87
|
+
| `null` | 71 | لا توجد طريقة – السجل بلا إحداثيات |
|
|
87
88
|
|
|
88
89
|
> **السجل رسمي؛ أما الإحداثيات فأفضل ما أمكن.** الأسماء والنوع والولاية من وزارة
|
|
89
90
|
> الصحة. لا تنشر الوزارة إحداثيات، فيستنتجها GeoAlgeria (انظر *المصدر والمنهجية*).
|
|
@@ -111,8 +112,9 @@ const all: HealthEstablishment[] = sante.sante();
|
|
|
111
112
|
|
|
112
113
|
```
|
|
113
114
|
data/
|
|
114
|
-
sante.json #
|
|
115
|
+
sante.json # 668 مؤسسة (مصفوفة)
|
|
115
116
|
metadata.json # المصادر، الأعداد، التغطية، updated
|
|
117
|
+
retired-ids.json # معرّفات محجوزة إلى الأبد، وإلى أين انتقلت بياناتها
|
|
116
118
|
csv/sante.csv # المستودع + الإصدار (ليس في حزمة npm)
|
|
117
119
|
geojson/sante.geojson # معالم نقطية (السجلات ذات الإحداثيات)
|
|
118
120
|
```
|
|
@@ -152,11 +154,13 @@ data/
|
|
|
152
154
|
الخاصة التي يرسمها OpenStreetMap فتوجد في
|
|
153
155
|
[`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
|
|
154
156
|
يساوي `source` دائمًا `"msp"` (سجل وزارة الصحة)؛ يحمل `refs`
|
|
155
|
-
معرّفات المصادر المساهِمة – دائمًا `msp`، إضافة إلى `
|
|
157
|
+
معرّفات المصادر المساهِمة – دائمًا `msp`، إضافة إلى `msp_twin` عندما ينشر السجل
|
|
158
|
+
المؤسسة نفسها مرة ثانية باللغة الأخرى، وإضافة إلى `osm` أو `wikidata` عند
|
|
156
159
|
رفع الإحداثية إلى نقطة دقيقة. تكون `geo_precision` إما `"exact"` أو
|
|
157
160
|
`"approximate"` أو `null`؛ ويبيّن `geo_method` كيفية الحصول على الإحداثية
|
|
158
|
-
(`osm_point`، أو `wikidata_point`، أو `commune_centroid`، أو `
|
|
159
|
-
|
|
161
|
+
(`osm_point`، أو `wikidata_point`، أو `commune_centroid`، أو `owner_verified`،
|
|
162
|
+
أو `null`). تكون
|
|
163
|
+
`lat`/`lng`/`geo_precision`/`geo_method` كلّها `null` معًا للسجلات الـ71 التي
|
|
160
164
|
تعذّر ربط بلديتها.
|
|
161
165
|
|
|
162
166
|
> **الإحداثيات والبلدية مُستنتَجة وليست من الوزارة.** تَسرد وزارة الصحة الأسماء
|
|
@@ -180,7 +184,15 @@ data/
|
|
|
180
184
|
1. سحب سجل مؤسسات **وزارة الصحة** من واجهة WordPress REST في `sante.gov.dz`
|
|
181
185
|
(`healthinstitution`)، بالفرنسية والعربية، كلٌّ موسوم بولايته؛
|
|
182
186
|
2. اشتقاق **النوع** من كل عنوان و**مزاوجة** البطاقتين الفرنسية والعربية في سجلٍ
|
|
183
|
-
ثنائي
|
|
187
|
+
ثنائي اللغة. تمرّ المزاوجة بالموقع، ثم ببلدية مشتركة بلا التباس، ثم بعادة
|
|
188
|
+
السجل في نشر البطاقتين تحت معرّفَين متتاليَين. وهذه الخطوة الأخيرة تحتاج أكثر
|
|
189
|
+
من التجاور، إذ إنّ 42.9% فقط من البطاقات الفرنسية لها بطاقة عربية عند id+1:
|
|
190
|
+
يجب أن يتوافق الاسمان كذلك على هيكل صامت، وهو ما تشترك فيه فعلًا الكتابتان
|
|
191
|
+
الفرنسية والعربية لاسم واحد، ويبقى المرشَّح الملتبس سجلَّين بدل التخمين.
|
|
192
|
+
تُكتب كل قرار، بما في ذلك كل رفض وسببه، في
|
|
193
|
+
[`quality/sante-twin-recovery.json`](https://github.com/yasserstudio/geoalgeria/blob/main/quality/sante-twin-recovery.json).
|
|
194
|
+
ويذكر السجل البطاقتين: `refs.msp` بطاقته الأساسية (الفرنسية) و`refs.msp_twin`
|
|
195
|
+
البطاقة العربية، فيؤدي المعرّفان كلاهما إليه؛
|
|
184
196
|
3. ربط **الموقع ببلدية** من مجموعة `geoalgeria` ضمن ولايته (`commune` و
|
|
185
197
|
`commune_code` ومركز ثقل)؛
|
|
186
198
|
4. استعلام **Wikidata** (SPARQL، المستشفيات) و**OpenStreetMap** (Overpass،
|
package/README.fr.md
CHANGED
|
@@ -12,24 +12,24 @@
|
|
|
12
12
|
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
**
|
|
15
|
+
**668 établissements de santé publics** dans les **58 wilayas** dotées d'une
|
|
16
16
|
direction de la santé – établissements publics hospitaliers (EPH), de santé de
|
|
17
17
|
proximité (EPSP), hospitaliers spécialisés (EHS) et centres hospitalo-universitaires
|
|
18
|
-
(CHU) du **Ministère de la Santé (MSP)**, bilingues français/arabe, **
|
|
19
|
-
géolocalisés** (
|
|
20
|
-
centroïde de commune) avec rattachement commune/wilaya.
|
|
18
|
+
(CHU) du **Ministère de la Santé (MSP)**, bilingues français/arabe, **597
|
|
19
|
+
géolocalisés** (121 sur un point précis OpenStreetMap/Wikidata, 11 vérifiés à la
|
|
20
|
+
main, 465 sur un centroïde de commune) avec rattachement commune/wilaya.
|
|
21
21
|
Livré en JSON, CSV, GeoJSON et TypeScript. Fait partie de
|
|
22
22
|
[GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
|
|
23
23
|
|
|
24
24
|
> **Le volet communautaire vit dans [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques), et les deux ne doivent jamais être additionnés.**
|
|
25
25
|
> Ce paquet est le volet *registre* : les établissements publics que gère le
|
|
26
26
|
> ministère de la Santé, officiel et clos. `cliniques` est le volet
|
|
27
|
-
> *communautaire* : 1
|
|
27
|
+
> *communautaire* : 1 917 polycliniques, salles de soins, centres de santé,
|
|
28
28
|
> maternités et cliniques cartographiés par les contributeurs OpenStreetMap,
|
|
29
29
|
> partiel par nature. Tout élément OSM référencé par un enregistrement d'ici en
|
|
30
30
|
> est exclu par construction, donc aucun lieu n'est publié deux fois sous le
|
|
31
31
|
> même élément, mais les deux décrivent des volets différents d'un système de
|
|
32
|
-
> santé : additionner
|
|
32
|
+
> santé : additionner 668 et 1 917 ne compte rien de réel.
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
npm install @geoalgeria/sante
|
|
@@ -38,7 +38,7 @@ npm install @geoalgeria/sante
|
|
|
38
38
|
```js
|
|
39
39
|
import sante from "@geoalgeria/sante";
|
|
40
40
|
|
|
41
|
-
const all = sante.sante(); //
|
|
41
|
+
const all = sante.sante(); // 668 établissements
|
|
42
42
|
|
|
43
43
|
// Hôpitaux publics d'une wilaya (jointure sur le wilaya_code de GeoAlgeria)
|
|
44
44
|
const ephAlger = all.filter((e) => e.wilaya_code === "16" && e.type === "eph");
|
|
@@ -49,7 +49,7 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
49
49
|
|
|
50
50
|
## Ce que vous pouvez construire
|
|
51
51
|
|
|
52
|
-
- **Localisateurs d'hôpitaux et de cliniques** – des coordonnées sur
|
|
52
|
+
- **Localisateurs d'hôpitaux et de cliniques** – des coordonnées sur 597 des 668
|
|
53
53
|
enregistrements, prêtes pour une carte ou une recherche de proximité.
|
|
54
54
|
- **Annuaires de santé bilingues** – noms français et arabe, type officiel et
|
|
55
55
|
wilaya pour chaque établissement.
|
|
@@ -60,34 +60,35 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
60
60
|
|
|
61
61
|
| Jeu de données | Nombre | Coordonnées | Notes |
|
|
62
62
|
| --- | --- | --- | --- |
|
|
63
|
-
| Établissements de santé | **
|
|
63
|
+
| Établissements de santé | **668** | 597 géolocalisés | 58 wilayas, 590 bilingues |
|
|
64
64
|
|
|
65
65
|
**Par type**
|
|
66
66
|
|
|
67
67
|
| Type | Nombre | Signification |
|
|
68
68
|
| --- | --- | --- |
|
|
69
|
-
| `eph` |
|
|
70
|
-
| `epsp` |
|
|
71
|
-
| `ehs` |
|
|
72
|
-
| `chu` |
|
|
69
|
+
| `eph` | 257 | Établissement Public Hospitalier |
|
|
70
|
+
| `epsp` | 284 | Établissement Public de Santé de Proximité |
|
|
71
|
+
| `ehs` | 103 | Établissement Hospitalier Spécialisé |
|
|
72
|
+
| `chu` | 19 | Centre Hospitalo-Universitaire |
|
|
73
73
|
| `hopital` | 5 | autre hôpital public |
|
|
74
74
|
|
|
75
75
|
**Par précision des coordonnées** (`geo_precision`)
|
|
76
76
|
|
|
77
77
|
| Valeur | Nombre | Signification |
|
|
78
78
|
| --- | --- | --- |
|
|
79
|
-
| `exact` |
|
|
80
|
-
| `approximate` |
|
|
81
|
-
| `null` |
|
|
79
|
+
| `exact` | 132 | point précis : un établissement OSM ou Wikidata dans la commune, ou une position vérifiée à la main |
|
|
80
|
+
| `approximate` | 465 | centroïde de la commune de l'établissement |
|
|
81
|
+
| `null` | 71 | localité non rattachée à une commune – pas de coordonnées (`lat`/`lng` aussi `null`) |
|
|
82
82
|
|
|
83
83
|
**Par méthode d'obtention** (`geo_method`)
|
|
84
84
|
|
|
85
85
|
| Valeur | Nombre | Signification |
|
|
86
86
|
| --- | --- | --- |
|
|
87
|
-
| `osm_point` |
|
|
87
|
+
| `osm_point` | 118 | point précis d'un établissement OpenStreetMap dans la commune |
|
|
88
88
|
| `wikidata_point` | 3 | point précis d'un établissement Wikidata dans la commune |
|
|
89
|
-
| `commune_centroid` |
|
|
90
|
-
| `
|
|
89
|
+
| `commune_centroid` | 465 | centroïde de la commune de l'établissement (approximatif) |
|
|
90
|
+
| `owner_verified` | 11 | position relevée sur la carte par le propriétaire du projet, via le registre de corrections révisées |
|
|
91
|
+
| `null` | 71 | aucune méthode – l'enregistrement n'a pas de coordonnées |
|
|
91
92
|
|
|
92
93
|
> **Le registre est officiel ; les coordonnées sont au mieux.** Les noms, le type
|
|
93
94
|
> et la wilaya proviennent du Ministère de la Santé. Le MSP ne publie pas de
|
|
@@ -116,8 +117,9 @@ chaque [GitHub Release](https://github.com/yasserstudio/geoalgeria/releases) :
|
|
|
116
117
|
|
|
117
118
|
```
|
|
118
119
|
data/
|
|
119
|
-
sante.json #
|
|
120
|
+
sante.json # 668 établissements (tableau)
|
|
120
121
|
metadata.json # sources, totaux, couverture, updated
|
|
122
|
+
retired-ids.json # identifiants à jamais réservés, et où sont passées leurs données
|
|
121
123
|
csv/sante.csv # dépôt + Release (pas dans le tarball npm)
|
|
122
124
|
geojson/sante.geojson # entités Point (enregistrements géolocalisés)
|
|
123
125
|
```
|
|
@@ -159,11 +161,13 @@ que cartographie OpenStreetMap vivent dans
|
|
|
159
161
|
[`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
|
|
160
162
|
`source` vaut toujours `"msp"` (le registre du Ministère de la
|
|
161
163
|
Santé) ; `refs` porte les identifiants de provenance ayant contribué –
|
|
162
|
-
toujours `msp`, plus `
|
|
163
|
-
|
|
164
|
+
toujours `msp`, plus `msp_twin` quand le registre a publié le même
|
|
165
|
+
établissement une seconde fois dans l'autre langue, plus `osm` ou `wikidata`
|
|
166
|
+
quand la coordonnée a été remplacée par un point précis. `geo_precision` vaut `"exact"`, `"approximate"` ou
|
|
164
167
|
`null` ; `geo_method` indique comment la coordonnée a été obtenue (`osm_point`,
|
|
165
|
-
`wikidata_point`, `commune_centroid`, ou `null`).
|
|
166
|
-
`
|
|
168
|
+
`wikidata_point`, `commune_centroid`, `owner_verified`, ou `null`).
|
|
169
|
+
`lat`/`lng`/`geo_precision`/
|
|
170
|
+
`geo_method` valent tous `null` ensemble pour les 71 enregistrements dont la
|
|
167
171
|
localité n'a pu être rattachée à une commune.
|
|
168
172
|
|
|
169
173
|
> **Les coordonnées et la commune sont dérivées, pas issues du MSP.** Le
|
|
@@ -191,7 +195,19 @@ Lancez `npm run fetch` pour régénérer les sorties. Le script :
|
|
|
191
195
|
l'API REST WordPress de `sante.gov.dz` (`healthinstitution`), en français et
|
|
192
196
|
en arabe, chacun étiqueté par sa wilaya ;
|
|
193
197
|
2. déduit le **type** de chaque titre et **apparie** les fiches française et
|
|
194
|
-
arabe en un enregistrement bilingue
|
|
198
|
+
arabe en un enregistrement bilingue. L'appariement passe par la localité, puis
|
|
199
|
+
par une commune partagée sans ambiguïté, puis par l'habitude du registre de
|
|
200
|
+
publier les deux fiches sous des identifiants consécutifs. Cette dernière
|
|
201
|
+
étape exige plus que l'adjacence, puisque seules 42,9 % des fiches françaises
|
|
202
|
+
ont une fiche arabe à id+1 : les deux noms doivent aussi s'accorder sur un
|
|
203
|
+
squelette consonantique, ce que les orthographes française et arabe d'un même
|
|
204
|
+
nom partagent réellement, et un candidat ambigu reste deux enregistrements
|
|
205
|
+
plutôt qu'une supposition. Chaque décision, y compris chaque refus et son
|
|
206
|
+
motif, est écrite dans
|
|
207
|
+
[`quality/sante-twin-recovery.json`](https://github.com/yasserstudio/geoalgeria/blob/main/quality/sante-twin-recovery.json).
|
|
208
|
+
Un enregistrement cite les deux fiches : `refs.msp` est sa fiche principale
|
|
209
|
+
(française) et `refs.msp_twin` la fiche arabe, de sorte que les deux
|
|
210
|
+
identifiants résolvent vers lui ;
|
|
195
211
|
3. rattache la **localité à une commune** du jeu `geoalgeria` dans sa wilaya
|
|
196
212
|
(`commune`, `commune_code` et un centroïde) ;
|
|
197
213
|
4. interroge **Wikidata** (SPARQL, hôpitaux) et **OpenStreetMap** (Overpass,
|
package/README.md
CHANGED
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
**
|
|
15
|
+
**668 public health establishments** across all **58 wilayas** with health
|
|
16
16
|
directorates, public hospitals (EPH), proximity-health establishments (EPSP),
|
|
17
|
-
specialized hospitals (EHS) and university hospitals (CHU) from the **Ministry of Health (MoH)**, bilingual French/Arabic, **
|
|
18
|
-
OpenStreetMap/Wikidata point,
|
|
17
|
+
specialized hospitals (EHS) and university hospitals (CHU) from the **Ministry of Health (MoH)**, bilingual French/Arabic, **597 geocoded** (121 to a precise
|
|
18
|
+
OpenStreetMap/Wikidata point, 11 verified by hand, 465 to a commune centroid) with commune/wilaya
|
|
19
19
|
linkage. Shipped as JSON, CSV, GeoJSON, and
|
|
20
20
|
TypeScript. Part of [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
|
|
21
21
|
|
|
22
22
|
> **The community tier lives in [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques), and the two must not be summed.**
|
|
23
23
|
> This package is the *registry* tier: the public establishments the Ministry of
|
|
24
|
-
> Health runs, official and closed. `cliniques` is the *community* tier: 1,
|
|
24
|
+
> Health runs, official and closed. `cliniques` is the *community* tier: 1,917
|
|
25
25
|
> polycliniques, salles de soins, centres de santé, maternités and clinics
|
|
26
26
|
> mapped by OpenStreetMap volunteers, partial by nature. Every OSM element a
|
|
27
27
|
> record here references is excluded there by construction, so no place is
|
|
28
28
|
> published twice under the same element, but the two describe different tiers
|
|
29
|
-
> of a health system and adding
|
|
29
|
+
> of a health system and adding 668 to 1,917 counts nothing real.
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
npm install @geoalgeria/sante
|
|
@@ -35,7 +35,7 @@ npm install @geoalgeria/sante
|
|
|
35
35
|
```js
|
|
36
36
|
import sante from "@geoalgeria/sante";
|
|
37
37
|
|
|
38
|
-
const all = sante.sante(); //
|
|
38
|
+
const all = sante.sante(); // 668 establishments
|
|
39
39
|
|
|
40
40
|
// Public hospitals in a wilaya (joins GeoAlgeria's wilaya_code)
|
|
41
41
|
const ephAlger = all.filter((e) => e.wilaya_code === "16" && e.type === "eph");
|
|
@@ -46,7 +46,7 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
46
46
|
|
|
47
47
|
## What you can build
|
|
48
48
|
|
|
49
|
-
- **Hospital & clinic locators** – coordinates on
|
|
49
|
+
- **Hospital & clinic locators** – coordinates on 597 of 668 records, ready for a
|
|
50
50
|
map or nearest-facility search.
|
|
51
51
|
- **Bilingual health directories** – French and Arabic names, official type and
|
|
52
52
|
wilaya for every establishment.
|
|
@@ -57,34 +57,35 @@ const mappable = all.filter((e) => e.lat != null);
|
|
|
57
57
|
|
|
58
58
|
| Dataset | Count | Coordinates | Notes |
|
|
59
59
|
| --- | --- | --- | --- |
|
|
60
|
-
| Health establishments | **
|
|
60
|
+
| Health establishments | **668** | 597 geocoded | 58 wilayas, 590 bilingual |
|
|
61
61
|
|
|
62
62
|
**By type**
|
|
63
63
|
|
|
64
64
|
| Type | Count | Meaning |
|
|
65
65
|
| --- | --- | --- |
|
|
66
|
-
| `eph` |
|
|
67
|
-
| `epsp` |
|
|
68
|
-
| `ehs` |
|
|
69
|
-
| `chu` |
|
|
66
|
+
| `eph` | 257 | Établissement Public Hospitalier – public hospital |
|
|
67
|
+
| `epsp` | 284 | Établissement Public de Santé de Proximité – proximity health |
|
|
68
|
+
| `ehs` | 103 | Établissement Hospitalier Spécialisé – specialized hospital |
|
|
69
|
+
| `chu` | 19 | Centre Hospitalo-Universitaire – university hospital |
|
|
70
70
|
| `hopital` | 5 | other public hospital |
|
|
71
71
|
|
|
72
72
|
**By coordinate precision** (`geo_precision`)
|
|
73
73
|
|
|
74
74
|
| Value | Count | Meaning |
|
|
75
75
|
| --- | --- | --- |
|
|
76
|
-
| `exact` |
|
|
77
|
-
| `approximate` |
|
|
78
|
-
| `null` |
|
|
76
|
+
| `exact` | 132 | precise point: an OSM or Wikidata facility in the commune, or a location verified by hand |
|
|
77
|
+
| `approximate` | 465 | the establishment's commune centroid |
|
|
78
|
+
| `null` | 71 | locality not resolved to a commune – no coordinates (`lat`/`lng` also `null`) |
|
|
79
79
|
|
|
80
80
|
**By coordinate method** (`geo_method`)
|
|
81
81
|
|
|
82
82
|
| Value | Count | Meaning |
|
|
83
83
|
| --- | --- | --- |
|
|
84
|
-
| `osm_point` |
|
|
84
|
+
| `osm_point` | 118 | precise point from an OpenStreetMap facility in the commune |
|
|
85
85
|
| `wikidata_point` | 3 | precise point from a Wikidata facility in the commune |
|
|
86
|
-
| `commune_centroid` |
|
|
87
|
-
| `
|
|
86
|
+
| `commune_centroid` | 465 | the establishment's commune centroid (approximate) |
|
|
87
|
+
| `owner_verified` | 11 | location read off the map by the project owner, through the reviewed-correction ledger |
|
|
88
|
+
| `null` | 71 | no method – record has no coordinate |
|
|
88
89
|
|
|
89
90
|
> **The registry is official; the coordinates are best-effort.** Names, type and
|
|
90
91
|
> wilaya come from the Ministry of Health. The MoH publishes no coordinates,
|
|
@@ -114,8 +115,9 @@ const all: HealthEstablishment[] = sante.sante();
|
|
|
114
115
|
|
|
115
116
|
```
|
|
116
117
|
data/
|
|
117
|
-
sante.json #
|
|
118
|
+
sante.json # 668 establishments (array)
|
|
118
119
|
metadata.json # sources, counts, coverage, updated
|
|
120
|
+
retired-ids.json # ids no record may hold again, and where each one's data went
|
|
119
121
|
csv/sante.csv # repo + Release bundle (not in npm tarball)
|
|
120
122
|
geojson/sante.geojson # Point features (geocoded records only)
|
|
121
123
|
```
|
|
@@ -157,11 +159,12 @@ all; the private facilities OpenStreetMap records live in
|
|
|
157
159
|
[`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
|
|
158
160
|
`source` is always `"msp"` (the Ministry of Health registry);
|
|
159
161
|
`refs` carries the per-provenance ids that contributed the record, `msp`
|
|
160
|
-
always, plus `
|
|
161
|
-
|
|
162
|
+
always, plus `msp_twin` where the registry published the same establishment a
|
|
163
|
+
second time in the other language, plus `osm` or `wikidata` when the coordinate
|
|
164
|
+
was upgraded to a precise point. `geo_precision` is `"exact"`, `"approximate"`, or `null`; `geo_method`
|
|
162
165
|
names how the coordinate was obtained (`osm_point`, `wikidata_point`,
|
|
163
|
-
`commune_centroid`, or `null`). `lat`/`lng`/`geo_precision`/`geo_method` are all
|
|
164
|
-
`null` together for the
|
|
166
|
+
`commune_centroid`, `owner_verified`, or `null`). `lat`/`lng`/`geo_precision`/`geo_method` are all
|
|
167
|
+
`null` together for the 71 records whose locality could not be matched to a
|
|
165
168
|
commune.
|
|
166
169
|
|
|
167
170
|
> **Coordinates and commune are derived, not from the MoH.** The Ministry of
|
|
@@ -187,7 +190,17 @@ Run `npm run fetch` to regenerate every output. It:
|
|
|
187
190
|
`sante.gov.dz` WordPress REST API (`healthinstitution`), in French and Arabic,
|
|
188
191
|
each tagged with its wilaya;
|
|
189
192
|
2. derives the **type** from each title and **pairs** the French and Arabic posts
|
|
190
|
-
into one bilingual record
|
|
193
|
+
into one bilingual record. The pairing goes by locality, then by an
|
|
194
|
+
unambiguous shared commune, then by the registry's own habit of publishing
|
|
195
|
+
the two posts under consecutive ids. That last step needs more than the
|
|
196
|
+
adjacency, since only 42.9% of French posts have an Arabic post at id+1: the
|
|
197
|
+
two names must also agree on a consonant skeleton, which is what French and
|
|
198
|
+
Arabic spellings of one name actually share, and an ambiguous candidate is
|
|
199
|
+
left as two records rather than guessed at. Every decision, including each
|
|
200
|
+
refusal and its reason, is written to
|
|
201
|
+
[`quality/sante-twin-recovery.json`](https://github.com/yasserstudio/geoalgeria/blob/main/quality/sante-twin-recovery.json).
|
|
202
|
+
A record cites both posts: `refs.msp` is its primary (French) post and
|
|
203
|
+
`refs.msp_twin` the Arabic one, so either id resolves to it;
|
|
191
204
|
3. matches each establishment's **locality to a commune** in the `geoalgeria`
|
|
192
205
|
set within its wilaya, attaching `commune`, `commune_code` and a centroid;
|
|
193
206
|
4. queries **Wikidata** (SPARQL, hospitals) and **OpenStreetMap** (Overpass,
|