Ressources

Healthcare Service


1. Présentation de la ressource

Il s’agit d’une ressource divisée en deux profils pour décrire les « activités de soins » et les « équipements sociaux » :

  • HealthcareService-SocialEquipment pour les équipements sociaux : identifiant ARHGOS, date d’autorisation, date de première installation, active, référence à l’organisation, type d’équipement social, clientèle
  • HealthcareService-HealthCareActivity pour les activités de soin : identifiant ARHGOS, date d’autorisation, période d’autorisation, active, modalité, forme, type


2. Caractéristiques techniques de la ressource

Endpoint

https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService

Header

ESANTE-API-KEY

Méthodes HTTP associées

GET, POST

Paramètres de requête

_count, _include


3. Paramètres de recherche

Nom Type Description
_id token Recherche sur l’ID de la ressource HealthCare Service
_lastUpdated date Renvoie uniquement les ressources selon la date de mises à jour et le “modifier” utilisé (eq, ne, gt, lt, ge, le, ap). Plus d’informations sur les [dates] (https://www.hl7.org/fhir/R4/search.html#date)
_profile uri Sélectionner le profil de la ressource Healthcare Service
_since date  
_total string  
active token Recherche les ressources Healthcare Service actives
as-sp-data-information-system token Recherche sur le système d’information
characteristic token Recherche sur le type d’activité des équipements sociaux ou sur la forme d’activité des activités de soins
identifier token Recherche sur l’identifiant des équipements sociaux ou des activités de soins
organization reference Recherche tous les équipements sociaux ou activités de soins rattachés à une structure
service-category token Recherche sur la modalité des activités de soins
service-type token Recherche sur la discipline des équipements sociaux ou sur l’activité sanitaire régulée des activité de soins

4. Recherche d’activité de soin et d’équipement social sur critères

Voici des exemples de requêtes sur les activités de soin et les équipements sociaux.

4.1 Rechercher tout

En tant que client de l’API, je souhaite récupérer l’ensemble des activités de soins et les équipements sociaux. On utilise ici le _profile pour récupérer exclusivement les activités de soins ou les équipements sociaux.

Exemples de requêtes :

GET [base]/HealthcareService
#récupère l'ensemble des HealthcareServices - activités de soins et équipements sociaux (actives et inactives)

GET [base]/HealthcareService?_profile=https://interop.esante.gouv.fr/ig/fhir/annuaire/StructureDefinition/as-dp-healthcareservice-social-equipment
# récupère l'ensemble des HealthcareServices filtrés sur le profil équipements sociaux (actives et inactives)

GET [base]/HealthcareService?_profile=https://interop.esante.gouv.fr/ig/fhir/annuaire/StructureDefinition/as-dp-healthcareservice-healthcare-activity
# récupère l'ensemble des HealthcareServices filtrés sur le profil activités de soins (actives et inactives)


GET [base]/HealthcareService?_include=HealthcareService:organization 
# inclure les Organization qui sont référencées par les HealthcareService (HealthcareService + Organization)

GET [base]/HealthcareService?_include=* 
# inclure toutes les ressources qui sont référencées par les HealthcareService 



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService"
// create the client:
var client = FhirTestUtils.createClient();

var bundle = client.search().forResource(HealthcareService.class).returnBundle(Bundle.class).execute();

for (var healthcareServiceEntry : bundle.getEntry()) {
// print HealthcareService data:
var healthcareService = (HealthcareService) healthcareServiceEntry.getResource();
logger.info("Healthcare Service found: id={}", healthcareService.getIdElement().getIdPart());
}
// create the client:
var client = FhirTestUtils.CreateClient();

var bundle = client.Search<HealthcareService>();
foreach (var be in bundle.Entry)
{
    // print HealthcareService data:
    var healthcareService = be.Resource as HealthcareService;
    Console.WriteLine($"Healthcare Service found: id={healthcareService.IdElement.Value}");
}


4.2 Rechercher par identifiant (_id ou identifier)

En tant que client de l’API, je souhaite rechercher un service à partir de son identifiant.

Requête :

GET [base]/HealthcareService?_id=004-1014485-03
# récupère le HealthcareService en fonction de son identifiant technique

GET [base]/HealthcareService?identifier=52-52-49883
# récupère le HealthcareService en fonction de son identifiant métier

Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService?identifier=52-52-49883"
// create the client:
var client = FhirTestUtils.createClient();

var typeSearchClause = HealthcareService.IDENTIFIER.exactly().codes("52-52-49883");

var bundle = client.search()
.forResource(HealthcareService.class)
.where(typeSearchClause)
.returnBundle(Bundle.class).execute();

for (var healthcareServiceEntry : bundle.getEntry()) {
// print HealthcareService data:
var healthcareService = (HealthcareService) healthcareServiceEntry.getResource();
logger.info("Healthcare Service found: id={}", healthcareService.getIdentifierFirstRep().getValue());
}
// create the client:
var client = FhirTestUtils.CreateClient();

var q = new SearchParams()
   .Where("identifier=52-52-49883")
  .LimitTo(50);
var bundle = client.Search<HealthcareService>(q);
foreach (var be in bundle.Entry)
{
    // print HealthcareService data:
    var healthcareService = be.Resource as HealthcareService;
    Console.WriteLine($"Healthcare Service found: id={healthcareService.IdElement.Value}");
}


4.3 Rechercher par type/forme d’activité (characteristic)

En tant que client de l’API, je souhaite rechercher toutes les activités de soin ayant comme forme la Chirurgie ambulatoire (code 07).

Remarque : Les codes d’activité sont disponibles dans les référentiels suivants des NOS :


Exemples de requêtes :

GET [base]/HealthcareService?characteristic=https://mos.esante.gouv.fr/NOS/TRE_R276-FormeActivite/FHIR/TRE-R276-FormeActivite%7C07 
# Rechercher les HealthcareService selon la forme d'activité chirurgie ambulatoire (code: 07)
GET [base]/HealthcareService?characteristic=https://mos.esante.gouv.fr/NOS/TRE_R209-TypeActivite/FHIR/TRE-R209-TypeActivite%7C11 
# Rechercher les HealthcareService selon le type d'hébergement complet ou internat (code: 11)


Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService?characteristic=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R276-FormeActivite%2FFHIR%2FTRE-R276-FormeActivite%7C07"
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService?characteristic=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R209-TypeActivite%2FFHIR%2FTRE-R209-TypeActivite%7C11"
// create the client:
var client = FhirTestUtils.createClient();

var characteristicSearchClause = HealthcareService.CHARACTERISTIC.exactly().codes(
               "https://mos.esante.gouv.fr/NOS/TRE_R276-FormeActivite/FHIR/TRE-R276-FormeActivite",
                "07"
);

var bundle = client.search()
    .forResource(HealthcareService.class)
    .where(characteristicSearchClause)
    .returnBundle(Bundle.class).execute();

for (var healthcareServiceEntry : bundle.getEntry()) {
    // print HealthcareService data:
    var healthcareService = (HealthcareService) healthcareServiceEntry.getResource();
    var healthcareServiceCoding = healthcareService.getCharacteristicFirstRep().getCodingFirstRep();
    String characteristicData = healthcareServiceCoding.getSystem().concat("|").concat(healthcareServiceCoding.getCode());
    logger.info("Healthcare Service found: id={} | characteristic={}", healthcareService.getIdElement().getIdPart(), characteristicData);
}
// create the client:
var client = FhirTestUtils.CreateClient();

var q = new SearchParams()
   .Where("characteristic=https://mos.esante.gouv.fr/NOS/TRE_R276-FormeActivite/FHIR/TRE-R276-FormeActivite|07")
  .LimitTo(50);
var bundle = client.Search<HealthcareService>(q);
foreach (var be in bundle.Entry)
{
    // print HealthcareService data:
    var healthcareService = be.Resource as HealthcareService;
    var healthcareServiceCoding = healthcareService.Characteristic[0].Coding[0];

    Console.WriteLine($"Healthcare Service found: id={healthcareService.IdElement.Value} | characteristic={healthcareServiceCoding.System}|{healthcareServiceCoding.Code}");
}


4.4 Rechercher par statut (active)

En tant que client de l’API, je souhaite rechercher les activités de soins ou les équipements sociaux selon le statut Active

Exemples de requêtes :

GET [base]/HealthcareService?active=true 
# Recherche les HealthcareService qui sont actifs

GET [base]/HealthcareService?active=false 
# Recherche les HealthcareService qui sont inactifs


Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService?active=true"
// create the client:
var client = FhirTestUtils.createClient();

var activeSearchClause = HealthcareService.ACTIVE.exactly().code("true");

var bundle = client.search()
.forResource(HealthcareService.class)
.where(activeSearchClause)
.returnBundle(Bundle.class).execute();

for (var healthcareServiceEntry : bundle.getEntry()) {
// print HealthcareService data:
var healthcareService = (HealthcareService) healthcareServiceEntry.getResource();
logger.info("Healthcare Service found: id={} | status={}", healthcareService.getIdElement().getIdPart(), healthcareService.getActive());
}
// create the client:
var client = FhirTestUtils.CreateClient();

var q = new SearchParams()
   .Where("active=true")
  .LimitTo(50);
var bundle = client.Search<HealthcareService>(q);
foreach (var be in bundle.Entry)
{
    // print HealthcareService data:
    var healthcareService = be.Resource as HealthcareService;
    Console.WriteLine($"Healthcare Service found: id={healthcareService.IdElement.Value} | status={healthcareService.Active.Value}");
}


4.5 Rechercher par date de mise à jour (_lastUpdated)

En tant que client de l’API, je souhaite rechercher tous les services mis à jour depuis une certaine date ( >= ‘01/08/2025’ dans l’exemple ).

Exemples de requêtes :

GET [base]/HealthcareService?_lastUpdated=ge2025-08-01 
# Rechercher les HealthcareService qui ont été mis à jour depuis le 01/08/2025 inclus


Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/HealthcareService?_lastUpdated=ge2025-08-01"
// create the client:
var client = FhirTestUtils.createClient();

// create the date search parameter :
var dateParam = new DateClientParam("_lastUpdated");

var bundle = client.search()
        .forResource(HealthcareService.class)
        .where(dateParam.afterOrEquals().day("2025-08-01"))
        .returnBundle(Bundle.class).execute();

for (var healthcareServiceEntry : bundle.getEntry()) {
    // cast entry :
    var healthcareService = (HealthcareService) healthcareServiceEntry.getResource();
    // print update date & id :
    logger.info("HealthcarService found: id={} lastUpdate={}", healthcareService.getIdElement().getIdPart(), healthcareService.getMeta().getLastUpdated());
}
// create the client:
var client = FhirTestUtils.CreateClient();

var q = new SearchParams()
   .Where("_lastUpdated=ge2025-08-01")
  .LimitTo(50);
var bundle = client.Search<HealthcareService>(q);
foreach (var be in bundle.Entry)
{
    // print HealthcareService data:
    var healthcareService = be.Resource as HealthcareService;
    Console.WriteLine($"Healthcare Service found: id={healthcareService.IdElement.Value} lastUpdate={healthcareService.Meta.LastUpdated.Value}");
}


Code source des exemples

Vous retrouverez le code source de ces exemples sur notre repository git: