Skip to content

Commit 598c858

Browse files
author
William AZIS
committed
update
2 parents f0f990c + 3bbb67f commit 598c858

6 files changed

Lines changed: 60 additions & 76 deletions

File tree

docs/_data/menu.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,9 @@ header:
181181
- page: BAL MSSanté
182182
url: /pages/guide/version-2/use-case/uc-bal-mss.html
183183
title: BAL MSSanté
184-
# - page: Couloirs du Ségur du Numérique en Santé
185-
# url: /pages/guide/version-2/use-case/uc-segur.html
186-
# title: Couloirs du Ségur du Numérique en Santé
184+
- page: Couloirs du Ségur du Numérique en Santé
185+
url: /pages/guide/version-2/use-case/uc-segur.html
186+
title: Couloirs du Ségur du Numérique en Santé
187187
- title: Cas d'utilisation
188188
subfolderitems:
189189
- page: Type d'appels

docs/pages/changelog/changelog.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Le changelog documente les modifications associées à une version de l’API F
77

88
<div style="display: flex; justify-content: center;">
99
<p style="background-color: #ffcccc; border:1px solid grey; padding: 10px; max-width: 790px;">
10-
Nous vous informons qu'à partir de déc. 2025/janv. 2026, les appels à l'API FHIR redirigeront par défaut sur la version 2. Le décommissionnement de l'API FHIR Version 1 sera effectif à partir du 31 mars 2026.
10+
Nous vous informons qu'à partir de déc. 2025/janv. 2026, les appels à l'API FHIR redirigeront par défaut sur la version 2. Le décommissionnement de l'API FHIR Version 1 sera effectif à partir du juillet 2026.
1111
</p>
1212
</div>
1313

@@ -16,7 +16,7 @@ Le changelog documente les modifications associées à une version de l’API F
1616

1717
| Version API Annuaire Santé | Version FHIR | Version IG | Date début | Disponible jusqu'à |
1818
| --- | --- | --- | --- | --- |
19-
| Version 1 (Beta) | R4 | <a href="https://interop.esante.gouv.fr/ig/fhir/annuaire/0.1.0">0.1.0</a> - trial use | 5 septembre 2022 | Mars 2026 |
19+
| Version 1 (Beta) | R4 | <a href="https://interop.esante.gouv.fr/ig/fhir/annuaire/0.1.0">0.1.0</a> - trial use | 5 septembre 2022 | Juillet 2026 |
2020
| Version 2 | R4 | <a href="https://interop.esante.gouv.fr/ig/fhir/annuaire">1.1.0</a> | 28 Avril 2025 | TBD |
2121

2222
**Notes de livraison**

docs/pages/guide/version-2/getting-started/nouveautes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Nous allons voir en détail les nouveautés au niveau de chaque ressource:
103103
| --- | --- |
104104
| identifier | Mise à jour du code système pour filtrer sur les structures FINESS : https://finess.esante.gouv.fr |
105105
| identifier | Mise à jour du code système pour filtrer sur les structures RPPSRang : https://rpps.esante.gouv.fr |
106-
| telecom | Ajout d'un attribut telecom contenant l'ensemble des informations de communication (adresse MSS, téléphone, adresse mail |
106+
| telecom | Ajout d'un attribut telecom contenant l'ensemble des informations de communication (adresse MSS, téléphone, adresse mail) |
107107
| active | Si la ressource est en statut false, les informations suivantes seront visibles: id de la ressource, identifiant de la structure (finess, rpps rang, etc.), name (raison sociale) et active |
108108

109109

docs/pages/guide/version-2/resources/organization.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,8 @@ En tant que client de l'API, je souhaite rechercher une structure à partir de s
239239
GET [base]/Organization?identifier=001604103000
240240
# récupérer une structure dont l'identifiant de structure est 001604103000
241241

242+
GET [base]/Organization?identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C590064036
243+
# récupérer une structure appartenant au référentiel FINESS et dont l'identifiant de structure est 590064036
242244
```
243245

244246
<br />

docs/pages/guide/version-2/use-case/uc-call-type.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,3 @@ GET [base]/Organization?_revinclude=PractitionerRole:organization
231231
# Exemple avec la première requête pour récupérer les organisations et remonter les activités associées.
232232
```
233233
<br />
234-
La requête _has permettrait également de faire ce type de requête mais n'est pour le moment pas implémenté dans l'API FHIR V2.
235-
236-
```sh
237-
GET [base]/Practitioner?_has:PractitionerRole:practitioner:organization.address-postalcode=78
238-
```
239-

docs/pages/guide/version-2/use-case/uc-segur.md

Lines changed: 52 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,24 @@ Nous allons vous détailler ci-dessous comment interroger l'API pour identifier
2626
En tant que client de l'API, je souhaite rechercher l'ensemble des établissements médico-sociaux. Pour cela, il faut interroger la ressource Organization en fonction des deux critères suivants:
2727
<div class="wysiwyg" markdown="1">
2828
* l'identifier doit contenir le code système https://finess.esante.gouv.fr
29-
* l'établissement doit appartenait aux catégories d'établissements suivantes : 159, 165, 166, 172, 175, 176, 177, 178, 180, 182, 183, 186, 188, 189, 190, 192, 194, 195, 196, 197, 198, 202, 207, 209, 213, 221, 236, 238, 241, 246, 247, 249, 252, 253, 255, 286, 295, 344, 354, 370, 377, 378, 379, 381, 382, 390, 395, 396, 402, 411, 418, 427, 437, 440, 441, 445, 446, 448, 449, 453, 460, 462, 500, 501, 502, 608
29+
* l'établissement doit appartenir aux catégories d'établissements suivantes : 159, 165, 166, 172, 175, 176, 177, 178, 180, 182, 183, 186, 188, 189, 190, 192, 194, 195, 196, 197, 198, 202, 207, 209, 213, 221, 236, 238, 241, 246, 247, 249, 252, 253, 255, 286, 295, 344, 354, 370, 377, 378, 379, 381, 382, 390, 395, 396, 402, 411, 418, 427, 437, 440, 441, 445, 446, 448, 449, 453, 460, 462, 500, 501, 502, 608
3030
</div>
3131

3232
```sh
33-
GET [base]/Organization?identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C&type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R66-CategorieEtablissement%2FFHIR%2FTRE-R66-CategorieEtablissement%7C159%2C165%2C166%2C172%2C175%2C176%2C178%2C180%2C182%2C183%2C186%2C188%2C189%2C190%2C192%2C194%2C195%2C196%2C197%2C198%2C202%2C207%2C209%2C213
34-
# récupère les organisations qui ont un code système finess.esante.gouv.fr et qui les catégories d'établissements 159,165,166,172,175,176,178,180,182,183,186,188,189,190,192,194,195,196,197,198,202,207,209 et 213
33+
GET [base]/Organization?identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C&type=159,165,166,172,175,176,177,178,180,182,183,186,188,189,190,192,194,195,196,197,198,202,207,209,213,221,236,238,241,246,247,249,252,253,255,286,295,344,354,370,377,378,379,381,382,390,395,396,402,411,418,427,437,440,441,445,446,448,449,453,460,462,500,501,502,608
34+
# récupère les organisations qui ont un code système finess.esante.gouv.fr et qui appartiennent aux différents catégories d'établissements de la requête (159,165,166, etc.)
3535
```
3636

37-
NOTE| Nous avons constaté que l'appel peut échouer en prenant en compte l'ensemble des catégories d'établissements. Nous vous invitons à diviser vos appels pour vous assurer de la bonne récupération des organisations.
38-
3937
Pour information, ces codes font partie de la TRE [TRE-R66-CategorieEtablissement](https://mos.esante.gouv.fr/NOS/TRE_R66-CategorieEtablissement/FHIR/TRE-R66-CategorieEtablissement).
4038

4139

4240

4341
<div class="code-sample">
4442
<div class="tab-content" data-name="curl">
4543
{% highlight bash %}
44+
45+
curl -H "ESANTE-API-KEY: d5aa2278-61af-43c1-8167-feb7c695d1e1" -X POST "https://gateway.api.esante.gouv.fr/fhir/v2/Organization/_search" -d type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R66-CategorieEtablissement%2FFHIR%2FTRE-R66-CategorieEtablissement%7C159%2C165%2C166%2C172%2C175%2C176%2C177%2C178%2C180%2C182%2C183%2C186%2C188%2C189%2C190%2C192%2C194%2C195%2C196%2C197%2C198%2C202%2C207%2C209%2C213%2C221%2C236%2C238%2C241%2C246%2C247%2C249%2C252%2C253%2C255%2C286%2C295%2C344%2C354%2C370%2C377%2C378%2C379%2C381%2C382%2C390%2C395%2C396%2C402%2C411%2C418%2C427%2C437%2C440%2C441%2C445%2C446%2C448%2C449%2C453%2C460%2C462%2C500%2C501%2C502%2C608&identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C'
46+
4647
curl -H "ESANTE-API-KEY: d5aa2278-61af-43c1-8167-feb7c695d1e1" -X POST https://gateway.api.esante.gouv.fr/fhir/v2/Organization/_search -d 'type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R66-CategorieEtablissement%2FFHIR%2FTRE-R66-CategorieEtablissement%7C159%2Chttps%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R66-CategorieEtablissement%2FFHIR%2FTRE-R66-CategorieEtablissement%7C159%2C165%2C166%2C172%2C175%2C176%2C178%2C180%2C182%2C183%2C186%2C188%2C189%2C190%2C192%2C194%2C195%2C196%2C197%2C198%2C202%2C207%2C209%2C213&identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C'
4748

4849
{% endhighlight %}
@@ -171,12 +172,10 @@ Vous trouverez ainsi des réponses JSON de ce type avec le système https://fine
171172
172173
### <a id="two-header"></a>2. Le couloir Hôpital
173174
174-
175-
176175
En tant que client de l'API, je souhaite rechercher l'ensemble des établissements sanitaires. Pour s'assurer que l'établissement ne correspond pas à un établissement médico-social:
177176
<div class="wysiwyg" markdown="1">
178177
- l'appel doit être réalisé en filtrant sur le code système de la [TRE-R02-SecteurActivite](https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite/)
179-
- Vérifier que chaque structure ne fasse pas partie des catégories d'établissements "médico-sociaux" (voir la liste des catégories d'établisssements dans le cas d'utilisation précédent).
178+
- Vérifier que chaque structure ne FASSE PAS PARTIE des catégories d'établissements "médico-sociaux" (voir la liste des catégories d'établisssements dans le cas d'utilisation précédent).
180179
- l'appel doit être réalisé sur les secteurs d'activités :
181180
</div>
182181
@@ -193,100 +192,89 @@ En tant que client de l'API, je souhaite rechercher l'ensemble des établissemen
193192
194193
**Requêtes :**
195194
```sh
196-
GET [base]/Organization?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA01%2CSA02%2CSA03%2CSA04%2CSA30%2CSA34%2CSA36
197-
# Récupère toutes les organisations qui sont dans les secteurs d'activités suivants : SA01, SA02, SA03, SA04, SA30, SA34, SA36
195+
GET [base]/Organization?identifier=https%3A%2F%2Ffiness.esante.gouv.fr%7C&type=SA01,SA02,SA03,SA04,SA30,SA34,SA36&type:not=159,165,166,172,175,176,177,178,180,182,183,186,188,189,190,192,194,195,196,197,198,202,207,209,213,221,236,238,241,246,247,249,252,253,255,286,295,344,354,370,377,378,379,381,382,390,395,396,402,411,418,427,437,440,441,445,446,448,449,453,460,462,500,501,502,608
196+
# Récupère toutes les organisations provenant du SI FINESS, qui sont dans les secteurs d'activités suivants : SA01, SA02, SA03, SA04, SA30, SA34, SA36 et qui n'appartiennent pas aux catégories d'établissement du secteur médico-social
198197
```
199198

199+
### <a id="three-header"></a>3. Le couloir Hôpital
200200

201+
En tant que client de l'API, je souhaite rechercher l'ensemble des officines de pharmacie. Il faut interroger la ressource Organization :
202+
<div class="wysiwyg" markdown="1">
203+
* En filtrant sur le système et le secteur d'activité de l'organisation : https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite, SA33, SA38, SA39, SA65
204+
</div>
201205

206+
<br />
207+
La liste des codes des pharmacies (ex: SA33, etc...) se trouve dans le référentiel : [TRE-R02-SecteurActivite](https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite/)
202208

203209

204210
<div class="code-sample">
205-
206211
<div class="tab-content" data-name="curl">
207212
{% highlight bash %}
208-
curl -H "ESANTE-API-KEY: {{site.ans.api_key }}" "{{site.ans.api_url}}/fhir/v2?_getpages=b109ca26-32eb-416f-8c8a-fee6c6597bb9&_pageId=lZg9MO8QrAVQZoT5uxjWir7vNAEr7AGfqD_nysfrz5wl53MhYmudRGTxjJfwUVMYuYOdvQq4OASgzZbCGJjhb7EH19BN-GH2uG5r5q9ZT680D729MuB8AQowHOP0m-nlaq5JQ3eWKdOAc4z6ZlPQSKRIa2LDXto2BFdF4cEs2TVtK1uJsLVSBVq6JJElmJv5vrd0wkQaaf9H5HNBJG_W1g4gIxbflOSdm8MMyIAvA_Jm6tKvrcC9kFA5Rqn0_FawrKQJbmA2hi0ZbTJaZmaNHJSRA05shFi4vQMBSL0jqs1vo3bZCgFquO5qHyghvwrqmanzRhMjWzSGwanYS4jdpuScMd-btLsRIobeF9bNhGS3bcAVcS3a6SuUkya1H-nfd5XP957ZzPFP-hPsjHuSk4oXbbxYirHZFaKHMrdM3dmXbOdHzPsbgxA9-6RhJgwtlXzOuBToLIQ9VPQrL5F1Z0VeDkpHN50pG445m9Y6zL-YmKruLhsEvfnW0f3PgDKnIUZsFQNMmTetD7vRMlfxiPBws5J7d0HJB1WFG-Qk0n6q6hW4PStx9lsvmSS5Ggkg5At7ko005tiVj50SjbvTz9Bgj-4MfVHpmzY5og8avqHwci6Vo4iE57W4QaGuEQFKkFp2aDF6kBpY8SmKAbYGS08NjjiXqHSpsaj0PxGaS5NMX0vf69eQSd1X8HVQtFlbZubcKQs-F3wrZwp4J9a_Tfhd913wZB5wDHA1C226GfnhFQ5jx2BilMUjw-sVDb-_RmWsDYPG&_bundletype=searchset"
213+
curl -H "ESANTE-API-KEY: {{site.ans.api_key }}" "{{site.ans.api_url}}/fhir/Organization?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA33%2Chttps%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA38%2Chttps%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA39%2Chttps%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%SA65"
209214
{% endhighlight %}
210215
</div>
211216
<div class="tab-content" data-name="java">
212217
{% highlight java %}
213218
var client = createClient();
214-
215-
// hospital:
216-
var bHospital = client.search().forResource(Organization.class)
217-
.where(Organization.TYPE.exactly().codes("SA01","SA02","SA03","SA04","SA30","SA34","SA36"))
218-
.returnBundle(Bundle.class).execute();
219-
var totalHospital = bHospital.getTotal();
220-
var typesAsStringList = Arrays.asList("159","165","166","172","175","176","177", "178","180","182","183","186","188","189","190","192","194","195","196","197","198","202","207","209","213","221","236","238","241","246","247","249","252","253","255","286","295","344","354","370","377","378","379","381","382","390","395","396","402","411","418","427","437","440","441","445","446","448","449","453","460","462","500","501","502");
221-
var goodElements = new ArrayList<>();
222219
var hasNext = true;
220+
Bundle orgBundle = null;
221+
var totalElements = 0;
223222
var treated = 0;
223+
var goodElements = new ArrayList<>();
224224

225-
logger.info("Total results - {}", bHospital.getTotal());
225+
// construct radiology facility request
226+
try {
227+
var pharmacyCodesList = Arrays.asList("SA33", "SA38", "SA39", "SA65");
228+
orgBundle = client.search().forResource(Organization.class)
229+
.where(Organization.TYPE.exactly().systemAndValues("https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite", pharmacyCodesList))
230+
.returnBundle(Bundle.class).execute();
231+
232+
totalElements = orgBundle.getTotal();
233+
} catch (Exception e) {
234+
e.printStackTrace();
235+
hasNext = false;
236+
}
237+
238+
logger.info("Total results - {}", totalElements);
226239

227240
do {
228-
var bundleContent = bHospital.getEntry();
229-
logger.info("Treat {} entry(ies)", bundleContent.size());
241+
var bundleContent = orgBundle.getEntry();
230242

231243
for (var e : bundleContent) {
232-
var org = (Organization) e.getResource();
233-
var isHospital = true;
234-
235-
// check hospital system & code
236-
for (var type : org.getType()) {
237-
for (var coding : type.getCoding()) {
238-
if ("https://mos.esante.gouv.fr/NOS/TRE_R66-CategorieEtablissement/FHIR/TRE-R66-CategorieEtablissement".equals(coding.getSystem()) &&
239-
typesAsStringList.contains(coding.getCode())) {
240-
isHospital = false;
241-
break;
242-
}
243-
}
244-
}
245-
246-
// filter good elements
247-
if(isHospital) {
244+
// store the organization inside a map
245+
if(e.getResource() instanceof Organization) {
246+
var org = (Organization) e.getResource();
248247
goodElements.add(org);
248+
treated++;
249249
}
250250
}
251251

252252
// check if result has a next page
253-
if (bHospital.getLink("next")!=null) {
254-
bHospital = client.loadPage().byUrl(bHospital.getLink("next").getUrl()).andReturnBundle(Bundle.class).execute();
253+
if (orgBundle.getLink("next")!=null) {
254+
try {
255+
orgBundle = client.loadPage().byUrl(orgBundle.getLink("next").getUrl()).andReturnBundle(Bundle.class).execute();
256+
} catch (Exception e) {
257+
logger.error("Error getting next page");
258+
e.printStackTrace();
259+
hasNext = false;
260+
}
255261
} else {
256262
hasNext = false;
257263
}
258264

259-
treated += bundleContent.size();
260-
logger.info("Progress treated - {} / {}", treated, bHospital.getTotal());
265+
logger.info("Progress treated - {} / {}", treated, totalElements);
261266
} while (hasNext);
262267

263-
logger.info("Total global - {}", totalHospital);
264-
logger.info("Total Hospital - {}", goodElements.size());
268+
logger.info("Total organization - {}", goodElements.size());
265269
{% endhighlight %}
266270
</div>
267-
268271
</div>
269-
270272
<br />
271273

272274

275+
<!-- # TODO
273276

274-
275-
276-
277-
278-
279-
280-
281-
282-
283-
284-
285-
286-
287-
288-
289-
### 3. Le couloir Biologie Médicale
277+
### 4. Le couloir Biologie Médicale
290278

291279
Afin de récupérer les établissements de biologie ayant des médecins ou pharmaciens exerçants, nous devons interroger l'endpoint Organization :
292280
<div class="wysiwyg" markdown="1">
@@ -815,4 +803,4 @@ logger.info("Total organization - {}", goodElements.size());
815803
816804
<br />
817805
818-
806+
-->

0 commit comments

Comments
 (0)