Ressources

Healthcare Service

Dans cette page


1) Description métier de la ressource

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

  • HealthcareService-SocialEquipment pour les équipements sociaux : date d’autorisation, date de première installation, code de discipline d’équipement, clientèle prise en charge, type d’activité.
  • HealthcareService-HealthCareActivity pour les activités de soin : type et code d’activité de soin, numéro d’autorisation ARGHOS, prériode de validité d’autorisation, indicateur de suppression sur implantation, code de modalité, code de forme.


2) Caractéristiques techniques de la ressource

Endpoint

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

Header

ESANTE-API-KEY

Méthodes HTTP associées

GET, POST

Paramètres de recherche

_id, identifier, characteristic, service-category, service-type, active, _profile, organization, _lastUpdated, _total

Paramètres de requête

_count, _include, _revinclude


3) 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.

3.1) Rechercher tout (sans critère)

Récit utilisateur : En tant que client de l’API, je souhaite récupérer l’ensemble des services de soin.

Exemples de requêtes :

GET [base]/HealthcareService
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 



Réponse (simplifiée) : 

HTTP 200 OK
  resourceType: Bundle
  type: searchset
  Healthcare Service found: id=52-52-49883
  Healthcare Service found: id=53-53-64147
  Healthcare Service found: id=76-91-59118



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/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());
}
$response = $client->request('GET', '/fhir/v1/HealthcareService');
/** @var  $healthcareServices  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$healthcareServices = $parser->parse((string) $response->getBody());
foreach($healthcareServices->getEntry() as $entry){
    /** @var  $healthcareService  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRHealthcareService */
    $healthcareService = $entry->getResource();

    echo("Healthcare Service found: id=".$healthcareService->getId()."\n");
}
// 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}");
}


3.2) Rechercher par identifiant (identifier)

Récit utilisateur : En tant que client de l’API, je souhaite rechercher un service à partir de son identifiant.

Requête :

GET [base]/HealthcareService?identifier=52-52-49883

Réponse (simplifiée) : 

HTTP 200 OK
  resourceType: Bundle
  type: searchset
  total: 1
  Healthcare Service found: id=52-52-49883



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/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());
}
$response = $client->request('GET', '/fhir/v1/HealthcareService?identifier=52-52-49883');
/** @var  $healthcareServices  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$healthcareServices = $parser->parse((string) $response->getBody());
foreach($healthcareServices->getEntry() as $entry){
    /** @var  $healthcareService  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRHealthcareService */
    $healthcareService = $entry->getResource();

    echo("Healthcare Service found: id=".$healthcareService->getId()."\n");
}
// 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}");
}


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

Récit utilisateur : 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érenciels suivants des NOS :


Exemples de requêtes :

GET [base]/HealthcareService?characteristic=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R276-FormeActivite%2FFHIR%2FTRE-R276-FormeActivite%7C07 #TRE-R276-FormeActivite
GET [base]/HealthcareService?characteristic=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R209-TypeActivite%2FFHIR%2FTRE-R209-TypeActivite%7C11 #TRE-R209-TypeActivite



Réponse (simplifiée) : 

HTTP 200 OK
  resourceType: Bundle
  type: searchset
  Healthcare Service found: id=04-04-62678 | characteristic=https://mos.esante.gouv.fr/NOS/TRE_R276-FormeActivite/FHIR/TRE-R276-FormeActivite|07
  Healthcare Service found: id=53-53-50060 | characteristic=https://mos.esante.gouv.fr/NOS/TRE_R276-FormeActivite/FHIR/TRE-R276-FormeActivite|07



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/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/v1/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);
}
$response = $client->request('GET', '/fhir/v1/HealthcareService?characteristic=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R276-FormeActivite%2FFHIR%2FTRE-R276-FormeActivite%7C07');
/** @var  $healthcareServices  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$healthcareServices = $parser->parse((string) $response->getBody());
foreach($healthcareServices->getEntry() as $entry){
    /** @var  $healthcareService  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRHealthcareService */
    $healthcareService = $entry->getResource();

    $characteristic = $healthcareService->getCharacteristic()[0]->getCoding()[0]->getSystem() . '|' . $healthcareService->getCharacteristic()[0]->getCoding()[0]->getCode();
    echo("Healthcare Service found: id=".$healthcareService->getId()." | characteristic=". $characteristic ."\n");
}
// 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}");
}


3.4) Rechercher par statut (active)

Récit utilisateur : En tant que client de l’API, je souhaite rechercher tous les services de santé actifs.

Exemples de requêtes :

GET [base]/HealthcareService?active=true #actif
GET [base]/HealthcareService?active=false #inactif



Réponse (simplifiée) : 

HTTP 200 OK
  resourceType: Bundle
  type: searchset
  Healthcare Service found: id=hcs-hcs-413 | status=true
  Healthcare Service found: id=hcs-hcs-655 | status=true
  Healthcare Service found: id=hcs-hcs-897 | status=true
  Healthcare Service found: id=hcs-hcs-412 | status=true



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/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());
}
$response = $client->request('GET', '/fhir/v1/HealthcareService?active=true');
/** @var  $healthcareServices  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$healthcareServices = $parser->parse((string) $response->getBody());
foreach($healthcareServices->getEntry() as $entry){
    /** @var  $healthcareService  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRHealthcareService */
    $healthcareService = $entry->getResource();

    echo("Healthcare Service found: id=".$healthcareService->getId()." | status=". $healthcareService->getActive() ."\n");
}
// 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}");
}


3.5) Rechercher par date de mise à jour (_lastUpdated)

Récit utilisateur : En tant que client de l’API, je souhaite rechercher tous les services mis à jour depuis une certaine date ( >= ‘18/08/2022’ dans l’exemple ).

Exemples de requêtes :

GET [base]/HealthcareService?_lastUpdated=ge2022-08-18 #Les HealthcareService ayant été mis à jour depuis le 18/08/2022 inclus



Réponse (simplifiée) : 

HTTP 200 OK
  resourceType: Bundle
  type: searchset
  HealthcarService found: id=004-1014038 lastUpdate=Tue Sep 06 03:21:02 CEST 2022
  HealthcarService found: id=004-1014044 lastUpdate=Tue Sep 06 03:21:02 CEST 2022
  HealthcarService found: id=004-1014050 lastUpdate=Tue Sep 06 03:21:02 CEST 2022



Exemples de code :

curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/HealthcareService?_lastUpdated=ge2022-08-18"
// 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("2022-08-18"))
        .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());
}
$response = $client->request('GET', '/fhir/v1/HealthcareService?_lastUpdated=ge2022-08-18');
/** @var  $healthcareServices  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$healthcareServices = $parser->parse((string) $response->getBody());
foreach($healthcareServices->getEntry() as $entry){
    /** @var  $healthcareService  \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRHealthcareService */
    $healthcareService = $entry->getResource();
    echo("Healthcare Service found: id=".$healthcareService->getId()." lastUpdate=". $healthcareService->getMeta()->getLastUpdated() ."\n");
}
// create the client:
var client = FhirTestUtils.CreateClient();

var q = new SearchParams()
   .Where("_lastUpdated=ge2022-08-18")
  .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 examples

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


Ressources FHIR >> Device