Démarrage rapide

Bases de l'API

URL d’accès (base url)

Tous les accès se font via HTTPS.

Variables Valeurs
api-url https://gateway.api.esante.gouv.fr/fhir/v2
ihm-url https://portail.openfhir.annuaire.sante.fr
gravitee-url https://portal.api.esante.gouv.fr (pour obtenir une API KEY)
NOTE Il n’existe pas d’environement bac à sable de l’API avec des données fictives. La seule API qui existe est celle de l’environnement de production avec les données publiques. Si vous créez votre propre environnement beta, merci de supprimer les données qui ont une durée de conservation supérieure à 30 jours.

Points de terminaison (endpoints)

Variables Valeurs
[api-url]/metadata Récupérer le capability statement
[api-url]/Practitioner Récupérer les exercices professionnels des professionnels intervenant dans le système de santé
[api-url]/PractitionerRole Récupérer les situations d’exercice des professionnels
[api-url]/Organization Récupérer les structures (entités juridiques, entités géographiques)
[api-url]/HealthcareService Récupérer les activités de soins et les équipements sociaux
[api-url]/Device Récupérer les équipements matériels lourds (EML)

Codes d’état HTTP (HTTP status codes)

Toutes les réponses utilisent les codes HTTP standard. Les codes HTTP standard sont des codes de statut envoyés par un serveur en réponse à une demande HTTP. Voici une liste non exhaustive des codes HTTP les plus courants et leur signification

Status code Type Definition
200 OK Requête réussie
400 Bad request La requête est mal formatée. Vérifiez les paramètres ou la syntaxe
401 Unauthorized Impossible d’authentifier la requête
403 Forbidden La requête n’est pas autorisée
404 Not found La ressource n’existe pas
410 Gone La ressource n’est plus accessible
412 Precondition Failed Echec de la précondition
500 Internal Server Error Une erreur inattendue est survenue

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 ). Cette méthode est notamment utilisée car certaines URLS peuvent atteindre la limite autorisée en nombre de caractères dan l’url.

Les méthodes PUT et DELETE sont interdites.

En-têtes (headers)

Ajouter dans les headers la clé ESANTE-API-KEY

  curl -H "ESANTE-API-KEY: [api-key]" "[api-url]/fhir/metadata"  


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 + les ressources incluses correspondant aux critères de recherche. Le service développé renvoie les 50 premiers résultats. Dans le cas où il n’y a pas de résultat le service renvoie total: 0.
  • 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 résultats.

  Plus d’informations sur la documentation.

Réponse de base – Echec

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 qui donne les détails sur la raison de l’échec
  • 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.
  • La réponse échoue car la réponse a dépassé le timeout de 30 secondes.

Il existe des OperationOutcome qui peuvent survenir dans le cas d’une suppression d’une ressource (DELETE) mais cette situation n’est pas appliquée sur notre cas.

{
  "resourceType": "OperationOutcome",
  "issue": [ {
    "severity": "error",
    "code": "processing",
    "diagnostics": "HAPI-0302: Unknown resource type 'PractitiXXXner' - Server knows how to handle: [Practitioner, PractitionerRole, Device, Organization, HealthcareService]"
  } ]
}