Ressources

Practitioner Role


1. Présentation de la ressource PractitionerRole

Il s’agit d’une ressource qui regroupe les données décrivant la « situation d’exercice » (ou activité) du professionnel :

  • Données sur l’activité professionnelle : identifiant de l’activité, genre d’activité, mode d’exercice, fonction, métier pharmacien, etc.
  • Données de contact : Messageries Sécurisées de Santé (MSS), type de messagerie, etc.


2. Caractéristiques techniques de la ressource

Endpoint

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

Header

ESANTE-API-KEY

Méthodes HTTP associées

GET, POST

Paramètres de recherche

_id, _lastUpdated, active, data-information-system, data-registration-authority, identifier, mailbox-mss, organization, practitioner, role

Paramètres de requête

_count, _include


3. Paramètres de recherche (Search Parameter)

Nom Type Description
_id token Recherche sur l’ID de la ressource
_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)
active token Recherche les ressources PractitionerRole actives
data-information-system token Recherche sur le système d’information (RPPS, FINESS, MSS, CG)
data-registration-authority token Recherche sur l’autorité d’enregistrement
identifier token Recherche sur l’identifiant métier du PractitionerRole
mailbox-mss string Recherche sur la Messagerie Sécurisée de Santé (MSS) associée à la structure d’exercice du professionnel
organization reference Référence l’ID technique de l’organisation associée à l’activité du professionnel
practitioner reference Référence l’ID technique du Practitioner associée à l’activité du professionnel
role token Recherche sur la fonction, le genre d’activité, le mode d’exercice ou la section Tableau des Pharmaciens

4. Recherche d’une situation d’exercice

4.1 Rechercher tout (sans critère)

En tant que client de l’API, je souhaite récupérer l’ensemble des données correspondant aux situations d’exercice des professionnels

Requêtes :

GET [base]/PractitionerRole
# récupère l'ensemble des PractitionersRoles (incluant les actifs et les inactifs)

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

GET [base]/PractitionerRole?_include=PractitionerRole:practitioner
# inclure les Practitioner qui sont référencés par les PractitionerRole (PractitionerRole + Practitioner)

GET [base]/PractitionerRole?_include=*
# inclure toutes les ressources qui sont référencées les PractitionerRole (PractitionerRole + Practitioner + Organization)


Exemples de code :

 curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/PractitionerRole" 
 

// Création du client 
var client = FhirTestUtils.createClient();
var bundle = client.search().forResource(PractitionerRole.class).returnBundle(Bundle.class).execute();

for (var roleEntry : bundle.getEntry()) {
// Print les données du PractitionerRole
var role = (PractitionerRole) roleEntry.getResource();
logger.info("Practitioner Role found: id={} code={}", role.getIdElement().getIdPart(), role.getCodeFirstRep().getCodingFirstRep().getCode());
}
 import requests from fhir.resources.fhirtypes import Bundle, PractitionerRole

# Configuration du client
api_url = "https://gateway.api.esante.gouv.fr/fhir/v2/PractitionerRole"
api_key = "XXXX-XXXX-XXXX-XXXXX"

headers = {
"ESANTE-API-KEY": api_key,
"Content-Type": "application/json"
}

# Fonction pour effectuer une requête FHIR
def fetch_practitioner_roles():
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
bundle = Bundle(**response.json())
for entry in bundle.entry:
practitioner_role = entry.resource
if isinstance(practitioner_role, PractitionerRole):
code = practitioner_role.code[0].coding[0].code if practitioner_role.code else "Unknown"
print(f"Practitioner Role found: id={practitioner_role.id} code={code}")
else:
response.raise_for_status()

# Utilisation du client
fetch_practitioner_roles()
 // create the client: var client = FhirTestUtils.CreateClient();
var bundle = client.Search<PractitionerRole>();
foreach (var be in bundle.Entry)
{
// print ids:
var practitionerRole = be.Resource as PractitionerRole;
Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value} code={practitionerRole.Code[0].Coding[0].Code}");
}


4.2 Recherche par identifiant technique (_id)

En tant que client de l’API, je souhaite rechercher une ressource PractitionerRole par son identifiant technique.

Requête :

GET [base]/PractitionerRole?_id=005-69329-7187020


Exemples de code :

 curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v2/PractitionerRole?_id=005-5087586-6923328" 
 

// Création du client 
var client = FhirTestUtils.createClient();
var practitionerRole = client.read()
.resource(PractitionerRole.class)
.withId("005-5087586-6923328")
.execute();

logger.info("Practitioner Role found: id={}", practitionerRole.getIdElement().getIdPart());
 import requests from fhir.resources.fhirtypes import PractitionerRole

# Configuration du client
api_url = "https://gateway.api.esante.gouv.fr/fhir/v2/PractitionerRole?_id=005-5087586-6923328"
api_key = "XXXX-XXXX-XXXX-XXXXX"

headers = {
"ESANTE-API-KEY": api_key,
"Content-Type": "application/json"
}

# Fonction pour effectuer une requête FHIR par identifiant technique
def fetch_practitioner_role_by_id():
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
practitioner_role = PractitionerRole(**response.json())
print(f"Practitioner Role found: id={practitioner_role.id}")
else:
response.raise_for_status()

# Utilisation du client
fetch_practitioner_role_by_id()
 

// Création du client 
var client = FhirTestUtils.CreateClient();
var practitionerRole = client.Read<PractitionerRole>("PractitionerRole?_id=005-5087586-6923328");
Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value}");


4.3 Recherche par identifiant de l’activité (identifier)

En tant que client de l’API, je souhaite rechercher une ressource PractitionerRole par l’identifiant de son activité.

Requête :

GET [base]/PractitionerRole?identifier=1013186038


4.4 Recherche par rôle (role)

Le paramètre “role” permet de rechercher les PractitionerRole selon différents référentiels. Voici les différents codes systèmes disponibles :

Type de données Code système
Type d’organisation http://interopsante.org/fhir/CodeSystem/fr-v2-3307
Fonction https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction
Role Prise Charge https://mos.esante.gouv.fr/NOS/TRE_R85-RolePriseCharge/FHIR/TRE-R85-RolePriseCharge
Autre Fonction Sanitaire https://mos.esante.gouv.fr/NOS/TRE_R96-AutreFonctionSanitaire/FHIR/TRE-R96-AutreFonctionSanitaire
Genre activité https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite
Mode d’exercice https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice
Métier Pharmacien Section Tableau CNOP https://mos.esante.gouv.fr/NOS/TRE_R06-SectionTableauCNOP/FHIR/TRE-R06-SectionTableauCNOP
Metier Pharmacien Sous Section Tableau CNOP https://mos.esante.gouv.fr/NOS/TRE_G05-SousSectionTableauCNOP/FHIR/TRE-G05-SousSectionTableauCNOP

Lorsque vous souhaitez rechercher sur un type de données particulier, utiliser les combinaisons suivantes :

  • Renseigner le code système concerné
  • Renseigner le code fonctionnel de la valeur souhaité


Exemples de requêtes :


GET [base]/PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R85-RolePriseCharge/FHIR/TRE-R85-RolePriseCharge%7C318
# récupère dans la TRE Role Prise Charge le code 318 correspondant à la fonction "Auxiliaire de vie sociale"

GET [base]/PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R06-SectionTableauCNOP/FHIR/TRE-R06-SectionTableauCNOP%7CA
# récupère dans la TRE SectionTableauCNOP le code A correspondant au Pharmacien titulaire d'officine "

GET [base]/PractitionerRole?mailbox-mss:contains=apycript.org
# récupère dans le PractitionerRole les adresses mail MSS qui contiennent la valeur apycript.org"


4.5 Recherche par statut

Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les situations d’exercices/activités actives

Requête :

GET [base]/PractitionerRole?active=true

Exemples de code :

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

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

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

for (var roleEntry : bundle.getEntry()) {
// print PractitionerRole data:
var role = (PractitionerRole) roleEntry.getResource();
logger.info("Practitioner Role found: id={} active={}", role.getIdElement().getIdPart(), role.getActive());
}
// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
  .Where("active=true")
  .LimitTo(50);
var bundle = client.Search<PractitionerRole>(q);
foreach (var be in bundle.Entry)
{
    // print ids:
    var practitionerRole = be.Resource as PractitionerRole;
    Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value} active={practitionerRole.Active.Value}");
}


Code source des exemples

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