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: