Bases de l'API

URL d’accès (base url)

Tous les accès se font via HTTPS.

Environnement Production

  • [api-url] : https://gateway.api.esante.gouv.fr/fhir/v1
  • [ihm-url] : https://portail.openfhir.annuaire.sante.fr
  • [gravitee-url] : https://portal.api.esante.gouv.fr (pour obtenir une API KEY)


Environnement Bac à sable (en accès restreint)

  • [api-url] : https://gateway.preprod.api.esante.gouv.fr/fhir/v1
  • [ihm-url] : https://demo.portail.openfhir.annuaire.asipsante.fr
  • [gravitee-url] : https://portal.preprod.api.esante.gouv.fr


Points de terminaison (endpoints)

  • [api-url]/Practitioner (pour les professionnels de santé)
  • [api-url]/PractitionerRole (pour les exercices pro et les situations d’exercice)
  • [api-url]/Organization (pour les structures)
  • [api-url]/HealthcareService (pour les activités de soins et les équipements sociaux)
  • [api-url]/Device (pour les équipements matériels lourds)
  • [api-url]/metadata (pour le capability statement)
  • [api-url]/health (pour le heathcare du service, accessible sans authentification)


Méthodes HTTP (http verbs)

L’API est conforme à la norme REST. Vous pouvez utiliser les ressources avec les méthodes HTTP suivantes :

  • GET : lecture de données simple (Regex Posix : \/fhir\/(v[0-9]{0,2}\/)?[a-zA-Z]{0,30} )
  • POST : lecture de données au format POST (Regex Posix : \/fhir\/(v[0-9]{0,2}\/)?[a-zA-Z]{0,30}\/_search )


En-têtes (headers)

  • ESANTE-API-KEY


-- Exemple :

  curl 
    -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX"  \
    "[api-url]/metadata"  
    
    -- XXXX-XXXX-XXXX-XXXXX étant l'API KEY


Construction de la réponse de base

Réponse de base – Succès

Lien vers la spécification FHIR : https://www.hl7.org/fhir/R4/bundle.html

Si la recherche est un succès, le serveur répond :

  • Un header avec un code 200 OK HTTP
  • Un body contenant une ressource Bundle dont le type = searchset. Le bundle encapsule 0 à n ressources Location corespondant aux critères de recherche plus les ressources incluses correspondant aux critères de recherche. Le service développé renvoie les 200 premiers résultats et indique le total trouvé dans une balise total. Dans le cas où il n’y a pas de résultat le service renvoie total: 0.


NOTE| La recherche est un succès à partir du moment où la requête peut être exécutée. Il peut il y avoir 0 à n correspondances. Plus de précision sur la spécification FHIR : https://www.hl7.org/fhir/R4/http.html

Réponse de base – Echec

Lien vers la spécification FHIR : https://www.hl7.org/fhir/R4/operationoutcome.html

Si la recherche échoue, le serveur doit répondre :

  • Un header avec un un code erreur HTTP 4XX ou 5XX
  • Un body contenant une ressource OperationOutcome[^3] qui donne les détails sur la raison de l’échec


NOTE| L’échec d’une recherche est la non-possibilité d’exécuter la requête, ce qui est différent d’aucune correspondance à la recherche. Plus de précision sur la spécification FHIR : https://www.hl7.org/fhir/R4/http.html

Codes d’état HTTP (HTTP status codes)

Toutes les réponses utilisent des codes d’état HTTP standard.

  • 200 (OK) : Successful request (OK)
  • 403 (Forbidden) : The request is not allowed
  • 404 (Not found) : The resource is not found


Erreur NET::ERR_CERT_AUTHORITY_INVALID sur l’IHM (https://portail.openfhir.annuaire.sante.fr)

L’erreur NET::ERR_CERT_AUTHORITY_INVALID est rencontrée car le certificat exposé sur le portail de démo de l’API FHIR est un certificat issu de l’IGC Santé de l’ANS, qui n’est pas une autorité de certification reconnue par les navigateurs du marché (a contrario des Thawte, DigiCert, etc). Pour y remédier, il faut ajouter l’AC IGC Santé dans le navigateur pour qu’elle soit reconnue par la suite.

Paramètres d’entrée

Les paramètres et critères de recherche de l’API sont standard FHIR :

  • Paramètres : https://www.hl7.org/fhir/search.html
  • Critères de recherche : https://www.hl7.org/fhir/searchparameter-registry.html
  • Paramètres créés pour les recherches sur les champs inclus dans des extensions et autres : https://www.hl7.org/fhir/searchparameter.html


NOTE| Pour plus de détails sur les paramètres d’entrées de l’API, se référer au CapabilityStatement : [api-url]/metadata

Paramètres et modificateurs de requêtes FHIR

Sont supportés les paramètres et le modificateurs suivants :

  • _revinclude,
  • _include
  • _count : 50 est la valeur par défaut
  • _total : none, estimate, accurate. le calcul du total par le service n’est pas systématique car ça dépend du temps nécessaire à son calcul. si ce temps est important, le total ne sera pas affiché.
  • Tous les préfixes de comparaison
  • Préfixes date: eq (equal), ge (greater equal), gt (greater than), lt (less than), le (less equal)
  • _elements : permet de préciser la liste d’attributs qui doit être retournée avec la ressource.


Pagination

Lorsqu’une réponse inclut de nombreux résultats, l’API les pagine et en retourne une partie. Par défaut, elle ne retourne que 50 éléments .Quand une réponse est paginée, les réponses incluent des liens permettant de récupérer les pages suivantes. Seul le lien Next est supporté.

Suppression d’une ressource (active=false ; status=inactive)

De manière générale, la ressource n’est plus publiée dans l’API à partir du moment où elle devient inactive. Cependant, elle ne disparait pas complétement de l’API puisqu’elle reste présente dans le delta avec uniquement son id et le champs active = false (device : status inactive). Ce fonctionnement permet notamment aux consommateurs du delta d’isoler les ressources supprimées entre deux dates (synchronisations).

Par défaut, l’API remonte toutes les ressources (actives et inactives). Pour exlcure les ressources inactives du résulat, utilisez le paramètre active ou status.

  • active pour l’ensemble des ressources excepté Device (exemple : [api-url]/Practitioner?active=true)
  • status pour Device (exemple : [api-url]/Device?status=active)



{
    "resourceType": "Bundle",
    "id": "835a413a-d78e-4e80-8735-7a9e14b1b4e9",
    "meta": {
        "lastUpdated": "2023-11-02T10:02:24.909+00:00"
    },
    "type": "searchset",
    "total": 1,
    "link": [
        {
            "relation": "self",
            "url": "https://gateway.preprod.api.esante.gouv.fr/fhir/v1/Practitioner?_id=003-118475&active=false"
        }
    ],
    "entry": [
        {
            "fullUrl": "https://gateway.api.esante.gouv.fr/fhir/v1/Practitioner/003-118475",
            "resource": {
                "resourceType": "Practitioner",
                "id": "003-118475",
                "meta": {
                    "versionId": "2",
                    "lastUpdated": "2023-09-05T08:55:12.763+00:00",
                    "source": "https://annuaire.sante.fr",
                    "profile": [
                        "https://annuaire.sante.gouv.fr/fhir/StructureDefinition/AS-Practitioner"
                    ]
                },
                "active": false
            }
        }
    ]
}