Ressources
Organization
L'API FHIR V1 est dépréciée et sera prochainement décommissionnée. Nous vous encourageons à passer sur la version 2 de l'API FHIR.
1) Description métier de la ressource
Il s’agit d’une ressource qui regroupe les données décrivant la « structure » :
- numéros SIREN/ SIRET ou FINESS, type de structure (géographique ou juridique), activité , secteur d’activité santé, catégorie juridique, modalités de participation au service public hospitalier (SPH),
- raison sociale, enseigne commerciale, coordonnées (adresse postale, adresses de messagerie électronique y compris MSS, téléphone, fax),
- pour les structures géographiques, le numéros FINESS de la strcuture juridique de rattachement.
2) Caractéristiques techniques de la ressource
|
Endpoint |
https://gateway.api.esante.gouv.fr/fhir/v1/Organization |
|
Header |
ESANTE-API-KEY |
|
Méthodes HTTP associées |
GET, POST |
|
Paramètres de requête |
_count, _include, _revinclude |
3) Paramètres de recherche
| Nom | Type | Description |
|---|---|---|
| _has | string | |
| _id | token | Recherche sur l’ID de la ressource Organization |
| _lastUpdated | date | Renvoie uniquement les ressources qui ont été mises à jour pour la dernère fois comme spécifié par la période donnée (eq, ne, gt, lt, ge, le, ap). |
| _since | date | |
| _total | string | |
| active | token | Recherche les ressources Organization actives |
| address | string | Recherche sur (une partie) de l’adresse de la structure |
| address-city | string | Recherche sur la commune spécifiée dans une adresse |
| address-country | string | Recherche sur le pays spécifiée dans une adresse |
| address-postalcode | string | Recherche sur le code postal spécifié dans une adresse |
| address-state | string | Recherche un état specifiée dans une adresse |
| address-use | string | Recherche sur un code use spécifié dans adresse |
| as-sp-data-information-system | token | Recherche sur le système d’information |
| as-sp-data-registration-authority | token | Recherche sur l’autorité d’enregistrement |
| endpoint | reference | Endpoint technique fournissant des accès aux services exploités pour l’organisation |
| identifier | token | Recherche sur tous les identifiants des structures |
| identifier-type | token | Recherche sur les types d’identifiers |
| mailbox-mss | string | Recherche sur les messageries sécurisées de santé (MSS) rattachées aux Organizations |
| name | string | Recherche sur la raison sociale des structures |
| partof | reference | Recherche tous les établissements géographiques rattachés à une même entité juridique |
| pharmacy-licence | string | Recherche sur le numéro de licence des officines |
| type | token | Recherche sur le type de structure/ code APE/ catégorie juridique/ secteur d’activité/ catégorie d’établissement ou le code SPH de la structure |
4) Recherche de structure sur critères
Voici quelques exemples de requêtes sur les structures.
4.1) Rechercher tout (sans critère)
Récit utilisateur : En tant que client de l’API, je souhaite récupérer l’ensemble des structures.
Requêtes :
GET [base]/Organization
#récupère l'ensemble des Organizations (incluant les actives et les inactives)
GET [base]/Organization?_include=Organization:partof #inclure les entités juridiques avec les informations auxquelles sont rattachées les entités géographiques
GET [base]/Organization?_revinclude=Device:organization #inclure les Device qui référencent les Organization (Organization + Device)
GET [base]/Organization?_revinclude=HealthcareService:organization #inclure les HealthcareService qui référencent les Organization (Organization + HealthcareService)
GET [base]/Organization?_revinclude=PractitionerRole:organization #inclure les PractitionerRole qui référencent les Organization (Organization + PractitionerRole)
GET [base]/Organization?_include=* #inclure toutes les ressources qui sont référencées par les Organization
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 7
Organizations trouvées :
1. **ID**: org-399
**Nom**: Weber, Weber and Weber
**Dernière mise à jour**: 2023-01-15T08:30:00Z
2. **ID**: org-158
**Nom**: Schaefer-Schaefer
**Dernière mise à jour**: 2023-01-10T14:50:00Z
3. **ID**: org-151
**Nom**: O'Reilly, O'Reilly and O'Reilly
**Dernière mise à jour**: 2023-01-08T09:20:00Z
4. **ID**: org-393
**Nom**: Volkman-Volkman
**Dernière mise à jour**: 2023-01-02T16:40:00Z
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" https://gateway.api.esante.gouv.fr/fhir/v1/Organization// create the client:
var client = FhirTestUtils.createClient();
var bundle = client.search().forResource(Organization.class).returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// print Organization ids:
var organization = (Organization) organizationEntry.getResource();
logger.info("Organization found: id={} name={}", organization.getIdElement().getIdPart(), organization.getName());
}$response = $client->request('GET', '/fhir/v1/Organization');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: id=".$organization->getId()." name=".$organization->getName()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var bundle = client.Search<Organization>();
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: id={organization.IdElement.Value} name={organization.Name}");
}4.2) Rechercher par date de mise à jour (_lastUpdated)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les structures mises à jour depuis une certaine date.
Requête :
GET [base]/Organization?_lastUpdated=ge2022-08-05
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: id=org-148 lastUpdate=Fri Aug 05 14:51:03 CEST 2022
Organization found: id=org-149 lastUpdate=Fri Aug 05 14:51:03 CEST 2022
Organization found: id=org-144 lastUpdate=Fri Aug 05 14:51:03 CEST 2022
Organization found: id=org-386 lastUpdate=Fri Aug 05 14:51:03 CEST 2022
Organization found: id=org-145 lastUpdate=Fri Aug 05 14:51:03 CEST 2022
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?_lastUpdated=ge2022-08-05T14%3A51%3A04"var client = FhirTestUtils.createClient();
// create the date search parameter :
var dateParam = new DateClientParam("_lastUpdated");
var bundle = client.search()
.forResource(Organization.class)
.where(dateParam.afterOrEquals().second("2022-08-05T14:51:04"))
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print update date & id :
logger.info("Organization found: id={} lastUpdate={}", organization.getIdElement().getIdPart(), organization.getMeta().getLastUpdated());
}$response = $client->request('GET', '/fhir/v1/Organization?_lastUpdated=ge2022-08-05T14%3A51%3A04');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: id=".$organization->getId()." lastUpdate=".$organization->getMeta()->getLastUpdated()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("_lastUpdated=ge2022-08-05T14:51:04")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: id={organization.IdElement.Value} lastUpdate={organization.Meta.LastUpdated}");
}4.3) Rechercher par identifiant (identifier)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher une structure à partir de l’un de ses identifiants.
Requête :
GET [base]/Organization?identifier=001604103000
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 1
Organization found: id=001604103000
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?identifier=001604103000%2C01603998400%2C001604252500"// create the client:
var client = FhirTestUtils.createClient();
// create the identifier search parameter :
var idParam = new StringClientParam("identifier");
var bundle = client.search()
.forResource(Organization.class)
.where(idParam.matches().values("001604103000", "01603998400", "001604252500"))
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print update date & id :
logger.info("Organization found: id={}", organization.getIdentifierFirstRep().getValue());
}$response = $client->request('GET', '/fhir/v1/Organization?identifier=001604103000%2C01603998400%2C001604252500');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: id=".$organization->getId()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("identifier=001604103000,01603998400,001604252500")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: id={organization.IdElement.Value}");
}4.4) Rechercher par numéro FINESS (identifier)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher une structure à partir de son numéro FINESS.
Requête :
GET [base]/Organization?identifier=http%3A%2F%2Ffiness.sante.gouv.fr%7C060016219
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 1
Organization found: id=060016219
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?identifier=http%3A%2F%2Ffiness.sante.gouv.fr%7C010000602%2Chttp%3A%2F%2Ffiness.sante.gouv.fr%7C010000628%2Chttp%3A%2F%2Ffiness.sante.gouv.fr%7C010000735" // create the client:
var client = FhirTestUtils.createClient();
// create finess where clause
var finessSearchClause = Organization.IDENTIFIER.exactly().systemAndValues(
"http://finess.sante.gouv.fr", "010000602", "010000628", "010000735");
var bundle = client.search()
.forResource(Organization.class)
.where(finessSearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print id :
logger.info("Organization found: id={}", organization.getIdentifierFirstRep().getValue());
}$response = $client->request('GET', '/fhir/v1/Organization?identifier=http%3A%2F%2Ffiness.sante.gouv.fr%7C010000602%2Chttp%3A%2F%2Ffiness.sante.gouv.fr%7C010000628%2Chttp%3A%2F%2Ffiness.sante.gouv.fr%7C010000735');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: id=".$organization->getId()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("identifier=http://finess.sante.gouv.fr|010000602,http://finess.sante.gouv.fr|010000628")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: id={organization.IdElement.Value}");
}4.5) Recherches par types (type)
Le champs type de la ressource Organization peut contenir différentes informations en fonction du système.
| Type | Description | Système | Lien / Options |
|---|---|---|---|
| EJ/EG | Type d’organization | http://interopsante.org/fhir/CodeSystem/fr-v2-3307 | GEOGRAPHICAL-ENTITY ou LEGAL-ENTITY |
| APE | JDV_J99-InseeNAFrav2Niveau5-RASS | https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5 | https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5 |
| Catégorie juridique | JDV_J100-FinessStatutJuridique-RASS | https://mos.esante.gouv.fr/NOS/TRE_R72-FinessStatutJuridique/FHIR/TRE-R72-FinessStatutJuridique | https://mos.esante.gouv.fr/NOS/TRE_R72-FinessStatutJuridique/FHIR/TRE-R72-FinessStatutJuridique |
| Secteur d’activité | JDV_J101-SecteurActivite-RASS | https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite | https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite |
| Catégorie Etablissement | JDV_J129-CategorieEtablissement-RASS | https://mos.esante.gouv.fr/NOS/TRE_R66-CategorieEtablissement/FHIR/TRE-R66-CategorieEtablissement | https://mos.esante.gouv.fr/NOS/TRE_R66-CategorieEtablissement/FHIR/TRE-R66-CategorieEtablissement |
| SPH | JDV_162-ESPIC-RASS | https://mos.esante.gouv.fr/NOS/TRE_R73-ESPIC/FHIR/TRE-R73-ESPIC | https://mos.esante.gouv.fr/NOS/TRE_R73-ESPIC/FHIR/TRE-R73-ESPIC |
Lorsque vous souhaitez rechercher sur un type particulier, utilisez la combinaison du système et du code souhaité :
Organization?type=<system>%7C<code>
Quelques exemples :
Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5%7C01.11ZRecherche par code APE 01.11Z : “Culture de céréales (sf riz) légumineuses, graines oléagineuses”Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R72-FinessStatutJuridique/FHIR/TRE-R72-FinessStatutJuridique%7C02Recherche par code Statuts juridiques provenant de FINESS, code 02 : “Département”Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R66-CategorieEtablissement/FHIR/TRE-R66-CategorieEtablissement%7C101Recherche par Catégorie d’établissements, code 101 “Centre Hospitalier Régional (C.H.R.)”
Ci-dessous, vous trouverez 3 exemples complets sur EJ/EG, Secteur d’activité et APE.
4.5.1) Rechercher par type “GEOGRAPHICAL”/”LEGAL”
Récit utilisateur : En tant que client de l’API, je souhaite rechercher les structures de type géographique.
Remarque :
Les deux types possibles sont :
- GEOGRAPHICAL-ENTITY
- LEGAL-ENTITY
Requête :
GET [base]/Organization?type=http%3A%2F%2Finteropsante.org%2Ffhir%2FCodeSystem%2Ffr-v2-3307%7CGEOGRAPHICAL-ENTITY
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: name=VILLAGE D'ENFANTS . ACTION ENFANCE type=GEOGRAPHICAL-ENTITY - 87.90A
Organization found: name=LVA LABONDE LA FORESTIERE type=GEOGRAPHICAL-ENTITY - SA41 - 462
Organization found: name=SERVICE D'ACTION EDUC EN MILIEU OUVERT type=GEOGRAPHICAL-ENTITY - SA20
Organization found: name=ESPACE ARTOIS SANTE - ARRAS type=GEOGRAPHICAL-ENTITY - SA04 - 698 - 9
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?type=http%3A%2F%2Finteropsante.org%2Ffhir%2FCodeSystem%2Ffr-v2-3307%7CGEOGRAPHICAL-ENTITY"
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?type=GEOGRAPHICAL-ENTITY" // create the client:
var client = FhirTestUtils.createClient();
// create the type search parameter :
var typeSearchClause = Organization.TYPE.exactly().systemAndValues(
"http://interopsante.org/fhir/CodeSystem/fr-v2-3307", "GEOGRAPHICAL-ENTITY");
var bundle = client.search()
.forResource(Organization.class)
.where(typeSearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print data :
var organizationCodes = organization.getType().stream().map(type -> type.getCodingFirstRep().getCode()).collect(Collectors.joining(" - "));
logger.info("Organization found: name={} type={}", organization.getName(), organizationCodes);
}$response = $client->request('GET', '/fhir/v1/Organization?type=http%3A%2F%2Finteropsante.org%2Ffhir%2FCodeSystem%2Ffr-v2-3307%7CGEOGRAPHICAL-ENTITY');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: name=".$organization->getName()." - type=".$organization->getType()[0]->getCoding()[0]->getCode()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("type=http://interopsante.org/fhir/CodeSystem/fr-v2-3307|GEOGRAPHICAL-ENTITY")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
var types = "";
foreach(var type in organization.Type)
{
types = types + " - " +type.Coding[0].Code;
}
Console.WriteLine($"Organization found: id={organization.IdElement.Value} type={types}");
}4.5.2) Rechercher sur la nomenclature d’activités française de l’Insee (code APE)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher les structures avec un code APE “82.19Z” qui correspond à “Photocopie, préparation de documents et autres activités spécialisées de soutien de bureau”
Remarque :
Les codes APE sont disponibles dans le référenciel TRE-R75-InseeNAFrev2Niveau5 des NOS que vous trouverez ici : TRE-R75-InseeNAFrev2Niveau5
Requête :
GET [base]/Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5%7C82.19Z
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: name=Skiles, Skiles and Skiles type=SA29 - 82.19Z - LEGAL-ENTITY - someorg
Organization found: name=Terry, Terry and Terry type=SA29 - 82.19Z - LEGAL-ENTITY - someorg
Organization found: name=Mills Inc type=SA29 - 82.19Z - LEGAL-ENTITY - someorg
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5%7C82.19Z" // create the client:
var client = FhirTestUtils.createClient();
// create the search parameter :
var typeSearchClause = Organization.TYPE.exactly().systemAndValues(
"https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5", "82.19Z");
var bundle = client.search()
.forResource(Organization.class)
.where(typeSearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print data :
var organizationCodes = organization.getType().stream().map(type -> type.getCodingFirstRep().getCode()).collect(Collectors.joining(" - "));
logger.info("Organization found: id={} type={}", organization.getName(), organizationCodes);
}$response = $client->request('GET', '/fhir/v1/Organization?type=https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5%7C82.19Z');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: name=".$organization->getName()." - type=".$organization->getType()[0]->getCoding()[0]->getCode()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("type=https://mos.esante.gouv.fr/NOS/TRE_R75-InseeNAFrev2Niveau5/FHIR/TRE-R75-InseeNAFrev2Niveau5|82.19Z")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
var types = "";
foreach (var type in organization.Type)
{
types = types + " - " + type.Coding[0].Code;
}
Console.WriteLine($"Organization found: id={organization.IdElement.Value} type={types}");
}4.5.3) Rechercher par secteur d’activité
Récit utilisateur : En tant que client de l’API, je souhaite rechercher les structures d’un secteur d’activité (SA29 par exemple, qui correspond à “Laboratoires d’analyses et de biologie médicale”).
Remarque :
La liste des secteurs d’activités se trouve dans le référenciel TRE_R02-SecteurActivite des NOS que vous trouverez ici : TRE_R02-SecteurActivite
Requête :
GET [base]/Organization?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA29
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: name=Auer, Auer and Auer activity=Laboratoire d'analyses et de biologie médicale
Organization found: name=Erdman, Erdman and Erdman activity=Laboratoire d'analyses et de biologie médicale
Organization found: name=Stiedemann and Sons activity=Laboratoire d'analyses et de biologie médicale
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA29" // create the client:
var client = FhirTestUtils.createClient();
// create the activity search parameter :
var activitySearchClause = Organization.TYPE.exactly().systemAndValues(
"https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite", "SA29");
var bundle = client.search()
.forResource(Organization.class)
.where(activitySearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print data :
var activityName = organization.getTypeFirstRep().getCodingFirstRep().getDisplay();
logger.info("Organization found: id={} activity={}", organization.getName(), activityName);
}$response = $client->request('GET', '/fhir/v1/Organization?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R02-SecteurActivite%2FFHIR%2FTRE-R02-SecteurActivite%7CSA29');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: name=".$organization->getName()." - type=".$organization->getType()[0]->getCoding()[0]->getCode()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("type=https://mos.esante.gouv.fr/NOS/TRE_R02-SecteurActivite/FHIR/TRE-R02-SecteurActivite|SA29")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
var types = "";
foreach (var type in organization.Type)
{
types = types + " - " + type.Coding[0].Code;
}
Console.WriteLine($"Organization found: id={organization.IdElement.Value} activity={types}");
}4.6) Rechercher par nom (name)
Récit utilisateur : En tant que client de l’API, je souhaite trouver une structure à partir de son nom.
Requête :
GET [base]/Organization?name%3Acontains=imagerie%2Ccentre
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: name=Mills Inc centre
Organization found: name=Centre d'imagerie médicale - Selimed 63
Organization found: name=Imagerie médicale République
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?name%3Acontains=imagerie%2Ccentre"// create the client:
var client = FhirTestUtils.createClient();
// create the name search parameter :
var nameSearchClause = Organization.NAME.contains().values("imagerie", "centre");
var bundle = client.search()
.forResource(Organization.class)
.where(nameSearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print data :
logger.info("Organization found: name={}", organization.getName());
}$response = $client->request('GET', '/fhir/v1/Organization?name%3Acontains=imagerie%2Ccentre');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
echo("Organization found: name=".$organization->getName()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("name:contains=imagerie").Add("name:contains", "centre")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: name={organization.Name}");
}4.7) Rechercher par code postal (address-postalcode)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher les structures d’un département (code postal).
Requête :
GET [base]/Organization?address-postalcode%3Aexact=13290%2C13321
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Organization found: name=Renard et Renard | zipCode=91794
Organization found: name=Maillard et Maillard | zipCode=10228
Exemples de code:
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Organization?address-postalcode%3Aexact=13290%2C13321"// create the client:
var client = FhirTestUtils.createClient();
// create the postal code search parameter :
var nameSearchClause = Organization.ADDRESS_POSTALCODE.matchesExactly().values("13290", "13321");
var bundle = client.search()
.forResource(Organization.class)
.where(nameSearchClause)
.returnBundle(Bundle.class).execute();
for(var organizationEntry : bundle.getEntry()){
// cast entry :
var organization = (Organization) organizationEntry.getResource();
// print data :
logger.info("Organization found: name={} | zipCode={}", organization.getName(), organization.getAddressFirstRep().getPostalCode());
}$response = $client->request('GET', '/fhir/v1/Organization?address-postalcode%3Aexact=13290%2C13321');
/** @var $organizations \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$organizations = $parser->parse((string) $response->getBody());
foreach($organizations->getEntry() as $entry){
/** @var $organization \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIROrganization */
$organization = $entry->getResource();
$zip = count($organization->getAddress()) == 0 ? '-' : $organization->getAddress()[0]->getPostalCode()->getValue();
echo("Organization found: name=".$organization->getName()." | zipCode=".$zip."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("address-postalcode=13290,13290")
.LimitTo(50);
var bundle = client.Search<Organization>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var organization = be.Resource as Organization;
Console.WriteLine($"Organization found: name={organization.Name} | zipCode={organization.Address[0].PostalCode}");
}Code source des exemples
Vous retrouverez le code source de ces exemples sur notre repository git: