@geoalgeria/sante 1.0.0 → 2.0.1

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 CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # @geoalgeria/sante
6
6
 
7
- **المؤسسات الصحية العمومية في الجزائر كبيانات قابلة للتثبيت.**
7
+ **المؤسسات الصحية العمومية في الجزائر، كبيانات قابلة للتثبيت.**
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
10
10
  [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
@@ -12,13 +12,22 @@
12
12
 
13
13
  </div>
14
14
 
15
- **695 مؤسسة صحية عمومية** عبر **58 ولاية** لها مديرية للصحة المؤسسات العمومية
15
+ **695 مؤسسة صحية عمومية** عبر **58 ولاية** لها مديرية للصحة المؤسسات العمومية
16
16
  الاستشفائية (EPH)، ومؤسسات الصحة الجوارية (EPSP)، والمؤسسات الاستشفائية المتخصصة
17
17
  (EHS)، والمراكز الاستشفائية الجامعية (CHU) من **وزارة الصحة (MSP)**، ثنائية اللغة
18
- عربي/فرنسي، **600 منها بإحداثيات** عبر OpenStreetMap وWikidata مع ربطٍ
19
- بالبلدية والولاية. متوفر بصيغ JSON وCSV وGeoJSON وTypeScript. جزء من
18
+ عربي/فرنسي، **600 منها بإحداثيات** (124 بنقطة دقيقة من OpenStreetMap/Wikidata،
19
+ و476 بمركز ثقل البلدية) مع ربطٍ بالبلدية والولاية. متوفر بصيغ JSON وCSV
20
+ وGeoJSON وTypeScript. جزء من
20
21
  [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
21
22
 
23
+ > **الطبقة المجتمعية موجودة في [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques)، ولا يجوز جمع الاثنين أبدًا.**
24
+ > هذه الحزمة هي طبقة *السجل*: المؤسسات العمومية التي تسيّرها وزارة الصحة، سجل
25
+ > رسمي ومغلق. أما `cliniques` فهي الطبقة *المجتمعية*: 1,894 عيادة متعددة
26
+ > الخدمات وقاعة علاج ومركز صحي ومصحة توليد وعيادة، رسمها متطوعو OpenStreetMap،
27
+ > وهي جزئية بطبيعتها. كل عنصر OSM يشير إليه سجل من هنا مستبعَد هناك بحكم
28
+ > البناء، فلا يُنشر أي مكان مرتين تحت العنصر نفسه، لكن الاثنتين تصفان طبقتين
29
+ > مختلفتين من منظومة الصحة، وجمع 695 مع 1,894 لا يعدّ شيئًا حقيقيًا.
30
+
22
31
  ```bash
23
32
  npm install @geoalgeria/sante
24
33
  ```
@@ -37,11 +46,11 @@ const mappable = all.filter((e) => e.lat != null);
37
46
 
38
47
  ## ما يمكنك بناؤه
39
48
 
40
- - **أدلّة ومحدّدات مواقع المستشفيات والعيادات** إحداثيات على 600 من أصل 695
49
+ - **أدلّة ومحدّدات مواقع المستشفيات والعيادات** إحداثيات على 600 من أصل 695
41
50
  سجلًّا، جاهزة للخريطة أو للبحث عن الأقرب.
42
- - **أدلّة صحية ثنائية اللغة** أسماء عربية وفرنسية، والنوع الرسمي والولاية لكل
51
+ - **أدلّة صحية ثنائية اللغة** أسماء عربية وفرنسية، والنوع الرسمي والولاية لكل
43
52
  مؤسسة.
44
- - **تحليل التغطية والتخطيط** حساب المؤسسات حسب النوع لكل بلدية/ولاية عبر البلاد.
53
+ - **تحليل التغطية والتخطيط** حساب المؤسسات حسب النوع لكل بلدية/ولاية عبر البلاد.
45
54
 
46
55
  ## المحتوى
47
56
 
@@ -61,12 +70,20 @@ const mappable = all.filter((e) => e.lat != null);
61
70
 
62
71
  **حسب دقّة الإحداثيات** (`geo_precision`)
63
72
 
73
+ | القيمة | العدد | المعنى |
74
+ | --- | --- | --- |
75
+ | `exact` | 124 | نقطة دقيقة من مرفق في OSM أو Wikidata ضمن البلدية |
76
+ | `approximate` | 476 | مركز ثقل بلدية المؤسسة |
77
+ | `null` | 95 | لم تُربط البلدية – بلا إحداثيات (`lat`/`lng` أيضًا `null`) |
78
+
79
+ **حسب طريقة الحصول على الإحداثية** (`geo_method`)
80
+
64
81
  | القيمة | العدد | المعنى |
65
82
  | --- | --- | --- |
66
83
  | `osm_point` | 121 | نقطة دقيقة من مرفق في OpenStreetMap ضمن البلدية |
67
84
  | `wikidata_point` | 3 | نقطة دقيقة من مرفق في Wikidata ضمن البلدية |
68
85
  | `commune_centroid` | 476 | مركز ثقل بلدية المؤسسة (تقريبي) |
69
- | `none` | 95 | لم تُربط البلدية بلا إحداثيات |
86
+ | `null` | 95 | لا توجد طريقة السجل بلا إحداثيات |
70
87
 
71
88
  > **السجل رسمي؛ أما الإحداثيات فأفضل ما أمكن.** الأسماء والنوع والولاية من وزارة
72
89
  > الصحة. لا تنشر الوزارة إحداثيات، فيستنتجها GeoAlgeria (انظر *المصدر والمنهجية*).
@@ -82,7 +99,7 @@ import sante from "@geoalgeria/sante/data/sante.json" with { type: "json" };
82
99
  // https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/sante.json
83
100
  ```
84
101
 
85
- المُحمِّلات وبنية السجلات **مُوثَّقة الأنواع** بالكامل تعريفات TypeScript مرفقة في الحزمة:
102
+ المُحمِّلات وبنية السجلات **مُوثَّقة الأنواع** بالكامل تعريفات TypeScript مرفقة في الحزمة:
86
103
 
87
104
  ```ts
88
105
  import sante, { type HealthEstablishment } from "@geoalgeria/sante";
@@ -95,7 +112,7 @@ const all: HealthEstablishment[] = sante.sante();
95
112
  ```
96
113
  data/
97
114
  sante.json # 695 مؤسسة (مصفوفة)
98
- metadata.json # المصادر، الأعداد، التغطية، generated_at
115
+ metadata.json # المصادر، الأعداد، التغطية، updated
99
116
  csv/sante.csv # المستودع + الإصدار (ليس في حزمة npm)
100
117
  geojson/sante.geojson # معالم نقطية (السجلات ذات الإحداثيات)
101
118
  ```
@@ -106,33 +123,40 @@ data/
106
123
  {
107
124
  "id": "01-ehs-02",
108
125
  "name": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
109
- "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
110
126
  "name_fr": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
127
+ "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
128
+ "wilaya_code": "01",
129
+ "commune_code": "0101",
130
+ "commune": "Adrar",
131
+ "lat": 27.875834,
132
+ "lng": -0.307533,
133
+ "geo_precision": "exact",
134
+ "geo_method": "osm_point",
135
+ "source": "msp",
136
+ "refs": {
137
+ "osm": "way/432370657",
138
+ "msp": "3588"
139
+ },
111
140
  "type": "ehs",
112
141
  "type_label_fr": "Établissement Hospitalier Spécialisé",
113
142
  "type_label_ar": "المؤسسة الاستشفائية المتخصصة",
114
143
  "sector": "public",
115
- "wilaya": "Adrar",
116
- "wilaya_ar": "أدرار",
117
- "wilaya_code": "01",
118
- "commune": "Adrar",
119
- "commune_code": 101,
120
- "source": "msp+osm",
121
- "geo_precision": "osm_point",
122
- "wikidata": null,
123
- "osm_id": "way/432370657",
124
- "msp_id": 3588,
125
- "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar",
126
- "lat": 27.875834,
127
- "lng": -0.307533
144
+ "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar"
128
145
  }
129
146
  ```
130
147
 
131
148
  `id` مفتاح ثابت `{wilaya_code}-{type}-{seq}` يولّده GeoAlgeria (لا تنشر الوزارة
132
- رمزًا). `name` هو الاسم الفرنسي إن وُجد، وإلا العربي. يُشتقّ `type` من العنوان،
133
- و`wilaya` من وسم الوزارة. `sector` يساوي `"public"` لكامل سجل الوزارة (العيادات
134
- الخاصة، عند إضافتها، ستحمل `"private"`). يبيّن `source` السجلات المساهِمة، و
135
- `geo_precision` مصدر الإحداثية. تكون `lat`/`lng` بقيمة `null` للسجلات الـ95 التي
149
+ رمزًا) – قيمة مبهمة، فريدة ضمن `sante.json`. `name` هو الاسم الفرنسي إن وُجد،
150
+ وإلا العربي. يُشتقّ `type` من العنوان، و`wilaya_code` من وسم الوزارة. `sector`
151
+ يساوي `"public"` لكامل سجل الوزارة، وهو لا يضم أي مؤسسة خاصة؛ أما المرافق
152
+ الخاصة التي يرسمها OpenStreetMap فتوجد في
153
+ [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
154
+ يساوي `source` دائمًا `"msp"` (سجل وزارة الصحة)؛ يحمل `refs`
155
+ معرّفات المصادر المساهِمة – دائمًا `msp`، إضافة إلى `osm` أو `wikidata` عند
156
+ رفع الإحداثية إلى نقطة دقيقة. تكون `geo_precision` إما `"exact"` أو
157
+ `"approximate"` أو `null`؛ ويبيّن `geo_method` كيفية الحصول على الإحداثية
158
+ (`osm_point`، أو `wikidata_point`، أو `commune_centroid`، أو `null`). تكون
159
+ `lat`/`lng`/`geo_precision`/`geo_method` كلّها `null` معًا للسجلات الـ95 التي
136
160
  تعذّر ربط بلديتها.
137
161
 
138
162
  > **الإحداثيات والبلدية مُستنتَجة وليست من الوزارة.** تَسرد وزارة الصحة الأسماء
@@ -145,7 +169,7 @@ data/
145
169
  ## تحتاج التقسيمات الإدارية أيضًا؟
146
170
 
147
171
  للولايات والدوائر والبلديات، استخدم الحزمة الرئيسية
148
- **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** بها تحوّل
172
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** بها تحوّل
149
173
  `commune_code` لمؤسسةٍ ما إلى مضلّع أو مركز ثقل. استخدم `@geoalgeria/sante` عندما
150
174
  تحتاج المؤسسات الصحية *فقط*.
151
175
 
package/README.fr.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # @geoalgeria/sante
6
6
 
7
- **Les établissements de santé publics d'Algérie sous forme de données prêtes à installer.**
7
+ **Les établissements de santé publics d'Algérie, sous forme de données prêtes à installer.**
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
10
10
  [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
@@ -13,13 +13,24 @@
13
13
  </div>
14
14
 
15
15
  **695 établissements de santé publics** dans les **58 wilayas** dotées d'une
16
- direction de la santé établissements publics hospitaliers (EPH), de santé de
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
18
  (CHU) du **Ministère de la Santé (MSP)**, bilingues français/arabe, **600
19
- géolocalisés** via OpenStreetMap et Wikidata avec rattachement commune/wilaya.
19
+ géolocalisés** (124 sur un point précis OpenStreetMap/Wikidata, 476 sur un
20
+ centroïde de commune) avec rattachement commune/wilaya.
20
21
  Livré en JSON, CSV, GeoJSON et TypeScript. Fait partie de
21
22
  [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
22
23
 
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
+ > Ce paquet est le volet *registre* : les établissements publics que gère le
26
+ > ministère de la Santé, officiel et clos. `cliniques` est le volet
27
+ > *communautaire* : 1 894 polycliniques, salles de soins, centres de santé,
28
+ > maternités et cliniques cartographiés par les contributeurs OpenStreetMap,
29
+ > partiel par nature. Tout élément OSM référencé par un enregistrement d'ici en
30
+ > est exclu par construction, donc aucun lieu n'est publié deux fois sous le
31
+ > même élément, mais les deux décrivent des volets différents d'un système de
32
+ > santé : additionner 695 et 1 894 ne compte rien de réel.
33
+
23
34
  ```bash
24
35
  npm install @geoalgeria/sante
25
36
  ```
@@ -38,11 +49,11 @@ const mappable = all.filter((e) => e.lat != null);
38
49
 
39
50
  ## Ce que vous pouvez construire
40
51
 
41
- - **Localisateurs d'hôpitaux et de cliniques** des coordonnées sur 600 des 695
52
+ - **Localisateurs d'hôpitaux et de cliniques** des coordonnées sur 600 des 695
42
53
  enregistrements, prêtes pour une carte ou une recherche de proximité.
43
- - **Annuaires de santé bilingues** noms français et arabe, type officiel et
54
+ - **Annuaires de santé bilingues** noms français et arabe, type officiel et
44
55
  wilaya pour chaque établissement.
45
- - **Analyse de couverture & planification** compter les établissements par type
56
+ - **Analyse de couverture & planification** compter les établissements par type
46
57
  par commune/wilaya sur tout le pays.
47
58
 
48
59
  ## Contenu
@@ -63,12 +74,20 @@ const mappable = all.filter((e) => e.lat != null);
63
74
 
64
75
  **Par précision des coordonnées** (`geo_precision`)
65
76
 
77
+ | Valeur | Nombre | Signification |
78
+ | --- | --- | --- |
79
+ | `exact` | 124 | point précis d'un établissement OSM ou Wikidata dans la commune |
80
+ | `approximate` | 476 | centroïde de la commune de l'établissement |
81
+ | `null` | 95 | localité non rattachée à une commune – pas de coordonnées (`lat`/`lng` aussi `null`) |
82
+
83
+ **Par méthode d'obtention** (`geo_method`)
84
+
66
85
  | Valeur | Nombre | Signification |
67
86
  | --- | --- | --- |
68
87
  | `osm_point` | 121 | point précis d'un établissement OpenStreetMap dans la commune |
69
88
  | `wikidata_point` | 3 | point précis d'un établissement Wikidata dans la commune |
70
89
  | `commune_centroid` | 476 | centroïde de la commune de l'établissement (approximatif) |
71
- | `none` | 95 | localité non rattachée à une commune — pas de coordonnées |
90
+ | `null` | 95 | aucune méthode l'enregistrement n'a pas de coordonnées |
72
91
 
73
92
  > **Le registre est officiel ; les coordonnées sont au mieux.** Les noms, le type
74
93
  > et la wilaya proviennent du Ministère de la Santé. Le MSP ne publie pas de
@@ -85,7 +104,7 @@ import sante from "@geoalgeria/sante/data/sante.json" with { type: "json" };
85
104
  // https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/sante.json
86
105
  ```
87
106
 
88
- Les chargeurs et les enregistrements sont entièrement **typés** les définitions TypeScript sont incluses :
107
+ Les chargeurs et les enregistrements sont entièrement **typés** les définitions TypeScript sont incluses :
89
108
 
90
109
  ```ts
91
110
  import sante, { type HealthEstablishment } from "@geoalgeria/sante";
@@ -98,7 +117,7 @@ chaque [GitHub Release](https://github.com/yasserstudio/geoalgeria/releases) :
98
117
  ```
99
118
  data/
100
119
  sante.json # 695 établissements (tableau)
101
- metadata.json # sources, totaux, couverture, generated_at
120
+ metadata.json # sources, totaux, couverture, updated
102
121
  csv/sante.csv # dépôt + Release (pas dans le tarball npm)
103
122
  geojson/sante.geojson # entités Point (enregistrements géolocalisés)
104
123
  ```
@@ -109,36 +128,43 @@ data/
109
128
  {
110
129
  "id": "01-ehs-02",
111
130
  "name": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
112
- "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
113
131
  "name_fr": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
132
+ "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
133
+ "wilaya_code": "01",
134
+ "commune_code": "0101",
135
+ "commune": "Adrar",
136
+ "lat": 27.875834,
137
+ "lng": -0.307533,
138
+ "geo_precision": "exact",
139
+ "geo_method": "osm_point",
140
+ "source": "msp",
141
+ "refs": {
142
+ "osm": "way/432370657",
143
+ "msp": "3588"
144
+ },
114
145
  "type": "ehs",
115
146
  "type_label_fr": "Établissement Hospitalier Spécialisé",
116
147
  "type_label_ar": "المؤسسة الاستشفائية المتخصصة",
117
148
  "sector": "public",
118
- "wilaya": "Adrar",
119
- "wilaya_ar": "أدرار",
120
- "wilaya_code": "01",
121
- "commune": "Adrar",
122
- "commune_code": 101,
123
- "source": "msp+osm",
124
- "geo_precision": "osm_point",
125
- "wikidata": null,
126
- "osm_id": "way/432370657",
127
- "msp_id": 3588,
128
- "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar",
129
- "lat": 27.875834,
130
- "lng": -0.307533
149
+ "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar"
131
150
  }
132
151
  ```
133
152
 
134
153
  `id` est une clé stable `{wilaya_code}-{type}-{seq}` synthétisée par GeoAlgeria
135
- (le MSP ne publie pas de code). `name` est le nom français s'il existe, sinon
136
- l'arabe. `type` est déduit du titre ; `wilaya` de l'étiquette du MSP. `sector`
137
- vaut `"public"` pour tout le registre MSP (les cliniques privées, une fois
138
- ajoutées, porteront `"private"`). `source` indique les registres ayant
139
- contribué ; `geo_precision` l'origine de la coordonnée. `lat`/`lng` valent
140
- `null` pour les 95 enregistrements dont la localité n'a pu être rattachée à une
141
- commune.
154
+ (le MSP ne publie pas de code) opaque, unique au sein de `sante.json`.
155
+ `name` est le nom français s'il existe, sinon l'arabe. `type` est déduit du
156
+ titre ; `wilaya_code` de l'étiquette du MSP. `sector` vaut `"public"` pour tout
157
+ le registre MSP, qui ne liste aucun établissement privé ; les structures privées
158
+ que cartographie OpenStreetMap vivent dans
159
+ [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
160
+ `source` vaut toujours `"msp"` (le registre du Ministère de la
161
+ Santé) ; `refs` porte les identifiants de provenance ayant contribué –
162
+ toujours `msp`, plus `osm` ou `wikidata` quand la coordonnée a été remplacée
163
+ par un point précis. `geo_precision` vaut `"exact"`, `"approximate"` ou
164
+ `null` ; `geo_method` indique comment la coordonnée a été obtenue (`osm_point`,
165
+ `wikidata_point`, `commune_centroid`, ou `null`). `lat`/`lng`/`geo_precision`/
166
+ `geo_method` valent tous `null` ensemble pour les 95 enregistrements dont la
167
+ localité n'a pu être rattachée à une commune.
142
168
 
143
169
  > **Les coordonnées et la commune sont dérivées, pas issues du MSP.** Le
144
170
  > Ministère de la Santé ne liste que noms, type et wilaya. GeoAlgeria rattache la
@@ -152,7 +178,7 @@ commune.
152
178
  ## Besoin des divisions administratives ?
153
179
 
154
180
  Pour les wilayas, dairas et communes, utilisez le paquet principal
155
- **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** c'est ce qui
181
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** c'est ce qui
156
182
  transforme le `commune_code` d'un établissement en polygone ou centroïde.
157
183
  Utilisez `@geoalgeria/sante` quand vous n'avez besoin *que* des établissements de
158
184
  santé.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # @geoalgeria/sante
6
6
 
7
- **Algeria's public health establishments as data you can install.**
7
+ **Algeria's public health establishments, as data you can install.**
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
10
10
  [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/sante)](https://www.npmjs.com/package/@geoalgeria/sante)
@@ -13,12 +13,21 @@
13
13
  </div>
14
14
 
15
15
  **695 public health establishments** across all **58 wilayas** with health
16
- directorates public hospitals (EPH), proximity-health establishments (EPSP),
17
- specialized hospitals (EHS) and university hospitals (CHU) from the **Ministère
18
- de la Santé (MSP)**, bilingual French/Arabic, **600 geocoded** via OpenStreetMap
19
- and Wikidata with commune/wilaya linkage. Shipped as JSON, CSV, GeoJSON, and
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, **600 geocoded** (124 to a precise
18
+ OpenStreetMap/Wikidata point, 476 to a commune centroid) with commune/wilaya
19
+ linkage. Shipped as JSON, CSV, GeoJSON, and
20
20
  TypeScript. Part of [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
21
21
 
22
+ > **The community tier lives in [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques), and the two must not be summed.**
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,894
25
+ > polycliniques, salles de soins, centres de santé, maternités and clinics
26
+ > mapped by OpenStreetMap volunteers, partial by nature. Every OSM element a
27
+ > record here references is excluded there by construction, so no place is
28
+ > published twice under the same element, but the two describe different tiers
29
+ > of a health system and adding 695 to 1,894 counts nothing real.
30
+
22
31
  ```bash
23
32
  npm install @geoalgeria/sante
24
33
  ```
@@ -37,11 +46,11 @@ const mappable = all.filter((e) => e.lat != null);
37
46
 
38
47
  ## What you can build
39
48
 
40
- - **Hospital & clinic locators** coordinates on 600 of 695 records, ready for a
49
+ - **Hospital & clinic locators** coordinates on 600 of 695 records, ready for a
41
50
  map or nearest-facility search.
42
- - **Bilingual health directories** French and Arabic names, official type and
51
+ - **Bilingual health directories** French and Arabic names, official type and
43
52
  wilaya for every establishment.
44
- - **Coverage & planning analysis** count establishments by type per
53
+ - **Coverage & planning analysis** count establishments by type per
45
54
  commune/wilaya across the whole country.
46
55
 
47
56
  ## What's inside
@@ -54,25 +63,33 @@ const mappable = all.filter((e) => e.lat != null);
54
63
 
55
64
  | Type | Count | Meaning |
56
65
  | --- | --- | --- |
57
- | `eph` | 270 | Établissement Public Hospitalier public hospital |
58
- | `epsp` | 292 | Établissement Public de Santé de Proximité proximity health |
59
- | `ehs` | 108 | Établissement Hospitalier Spécialisé specialized hospital |
60
- | `chu` | 20 | Centre Hospitalo-Universitaire university hospital |
66
+ | `eph` | 270 | Établissement Public Hospitalier public hospital |
67
+ | `epsp` | 292 | Établissement Public de Santé de Proximité proximity health |
68
+ | `ehs` | 108 | Établissement Hospitalier Spécialisé specialized hospital |
69
+ | `chu` | 20 | Centre Hospitalo-Universitaire university hospital |
61
70
  | `hopital` | 5 | other public hospital |
62
71
 
63
72
  **By coordinate precision** (`geo_precision`)
64
73
 
74
+ | Value | Count | Meaning |
75
+ | --- | --- | --- |
76
+ | `exact` | 124 | precise point from an OSM or Wikidata facility in the commune |
77
+ | `approximate` | 476 | the establishment's commune centroid |
78
+ | `null` | 95 | locality not resolved to a commune – no coordinates (`lat`/`lng` also `null`) |
79
+
80
+ **By coordinate method** (`geo_method`)
81
+
65
82
  | Value | Count | Meaning |
66
83
  | --- | --- | --- |
67
84
  | `osm_point` | 121 | precise point from an OpenStreetMap facility in the commune |
68
85
  | `wikidata_point` | 3 | precise point from a Wikidata facility in the commune |
69
86
  | `commune_centroid` | 476 | the establishment's commune centroid (approximate) |
70
- | `none` | 95 | locality not resolved to a commune — no coordinates |
87
+ | `null` | 95 | no method record has no coordinate |
71
88
 
72
89
  > **The registry is official; the coordinates are best-effort.** Names, type and
73
- > wilaya come from the Ministère de la Santé. The MSP publishes no coordinates,
74
- > so GeoAlgeria derives them see *Source & method* below. Counts move as the
75
- > MSP, OpenStreetMap and Wikidata are edited; each rebuild reflects their current
90
+ > wilaya come from the Ministry of Health. The MoH publishes no coordinates,
91
+ > so GeoAlgeria derives them, see *Source & method* below. Counts move as the
92
+ > MoH, OpenStreetMap and Wikidata are edited; each rebuild reflects their current
76
93
  > state.
77
94
 
78
95
  ## Formats
@@ -85,7 +102,7 @@ import sante from "@geoalgeria/sante/data/sante.json" with { type: "json" };
85
102
  // https://cdn.jsdelivr.net/npm/@geoalgeria/sante/data/sante.json
86
103
  ```
87
104
 
88
- The loaders and record shapes are fully **typed** TypeScript definitions ship in the package:
105
+ The loaders and record shapes are fully **typed**, TypeScript definitions ship in the package:
89
106
 
90
107
  ```ts
91
108
  import sante, { type HealthEstablishment } from "@geoalgeria/sante";
@@ -98,7 +115,7 @@ const all: HealthEstablishment[] = sante.sante();
98
115
  ```
99
116
  data/
100
117
  sante.json # 695 establishments (array)
101
- metadata.json # sources, counts, coverage, generated_at
118
+ metadata.json # sources, counts, coverage, updated
102
119
  csv/sante.csv # repo + Release bundle (not in npm tarball)
103
120
  geojson/sante.geojson # Point features (geocoded records only)
104
121
  ```
@@ -109,38 +126,46 @@ data/
109
126
  {
110
127
  "id": "01-ehs-02",
111
128
  "name": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
112
- "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
113
129
  "name_fr": "Etablissement Hospitalier Spécialisé Psychiatrie Adrar",
130
+ "name_ar": "المؤسسة الاستشفائية المتخصصة في الأمراض العقلية أدرار",
131
+ "wilaya_code": "01",
132
+ "commune_code": "0101",
133
+ "commune": "Adrar",
134
+ "lat": 27.875834,
135
+ "lng": -0.307533,
136
+ "geo_precision": "exact",
137
+ "geo_method": "osm_point",
138
+ "source": "msp",
139
+ "refs": {
140
+ "osm": "way/432370657",
141
+ "msp": "3588"
142
+ },
114
143
  "type": "ehs",
115
144
  "type_label_fr": "Établissement Hospitalier Spécialisé",
116
145
  "type_label_ar": "المؤسسة الاستشفائية المتخصصة",
117
146
  "sector": "public",
118
- "wilaya": "Adrar",
119
- "wilaya_ar": "أدرار",
120
- "wilaya_code": "01",
121
- "commune": "Adrar",
122
- "commune_code": 101,
123
- "source": "msp+osm",
124
- "geo_precision": "osm_point",
125
- "wikidata": null,
126
- "osm_id": "way/432370657",
127
- "msp_id": 3588,
128
- "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar",
129
- "lat": 27.875834,
130
- "lng": -0.307533
147
+ "slug": "etablissement-hospitalier-specialise-psychiatrie-adrar"
131
148
  }
132
149
  ```
133
150
 
134
151
  `id` is a stable `{wilaya_code}-{type}-{seq}` key synthesized by GeoAlgeria (the
135
- MSP publishes no establishment code). `name` is the French name where available,
136
- else Arabic. `type` is derived from the establishment's title; `wilaya` from the
137
- MSP's wilaya tag. `sector` is `"public"` for the whole MSP registry (private
138
- clinics, when added, will carry `"private"`). `source` records which registries
139
- contributed; `geo_precision` records where the coordinate came from. `lat`/`lng`
140
- are `null` for the 95 records whose locality could not be matched to a commune.
141
-
142
- > **Coordinates and commune are derived, not from the MSP.** The Ministère de la
143
- > Santé lists names, type and wilaya only. GeoAlgeria matches each
152
+ MoH publishes no establishment code), opaque, unique within `sante.json`.
153
+ `name` is the French name where available, else Arabic. `type` is derived from
154
+ the establishment's title; `wilaya_code` from the MoH's wilaya tag. `sector` is
155
+ `"public"` for the whole MoH registry, which lists no private establishment at
156
+ all; the private facilities OpenStreetMap records live in
157
+ [`@geoalgeria/cliniques`](https://www.npmjs.com/package/@geoalgeria/cliniques).
158
+ `source` is always `"msp"` (the Ministry of Health registry);
159
+ `refs` carries the per-provenance ids that contributed the record, `msp`
160
+ always, plus `osm` or `wikidata` when the coordinate was upgraded to a precise
161
+ point. `geo_precision` is `"exact"`, `"approximate"`, or `null`; `geo_method`
162
+ 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 95 records whose locality could not be matched to a
165
+ commune.
166
+
167
+ > **Coordinates and commune are derived, not from the MoH.** The Ministry of
168
+ > Health lists names, type and wilaya only. GeoAlgeria matches each
144
169
  > establishment's locality to the [`geoalgeria`](https://www.npmjs.com/package/geoalgeria)
145
170
  > commune set within its wilaya (giving `commune`, `commune_code` and a centroid
146
171
  > coordinate), then upgrades the coordinate to a precise point where a hospital
@@ -150,7 +175,7 @@ are `null` for the 95 records whose locality could not be matched to a commune.
150
175
  ## Need the administrative divisions too?
151
176
 
152
177
  For wilayas, dairas, and communes, use the main
153
- **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** package it's how
178
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** package, it's how
154
179
  you turn an establishment's `commune_code` into a polygon or centroid. Use
155
180
  `@geoalgeria/sante` when you *only* need the health establishments.
156
181
 
@@ -158,7 +183,7 @@ you turn an establishment's `commune_code` into a polygon or centroid. Use
158
183
 
159
184
  Run `npm run fetch` to regenerate every output. It:
160
185
 
161
- 1. pulls the **Ministère de la Santé** establishment registry from the
186
+ 1. pulls the **Ministry of Health** establishment registry from the
162
187
  `sante.gov.dz` WordPress REST API (`healthinstitution`), in French and Arabic,
163
188
  each tagged with its wilaya;
164
189
  2. derives the **type** from each title and **pairs** the French and Arabic posts
@@ -176,7 +201,7 @@ Raw source pulls are cached under
176
201
 
177
202
  Package **code** is [MIT](LICENSE). The **data** is a composite:
178
203
 
179
- - The **Ministère de la Santé** registry (names, type, wilaya) is a factual
204
+ - The **Ministry of Health** registry (names, type, wilaya) is a factual
180
205
  public-sector listing.
181
206
  - **Coordinates** are derived from **Wikidata** (**CC0**, public domain) and
182
207
  **OpenStreetMap** (**© OpenStreetMap contributors**, licensed under the