Ressources
Practitioner Role
L'API FHIR V1 est dépréciée et sera prochainement décommissionnée. Nous vous encourageons à passer sur la version 2 de l'API FHIR.
1) Description métier de la ressource
Il s’agit d’une ressource qui regroupe les données décrivant l’ « exercice » et la « situation » d’exercice du professionnel :
- Données relatives à l’exercice professionnel : nom et prénom d’exercice, profession, civilité d’exercice, catégorie d’exercice, qualifications de spécialiste et disciplines et attributions particulières.
- Données sur l’activité professionnelle : fonction ou rôle du professionnel dans la structure d’activité, genre d’activité, mode d’exercice, type d’activité libérale pour les activités concernées, statut hospitalier pour les activités concernées, données de contact du professionnel pour l’activité concernée, données relatives à la structure d’activité.
- Données relatives à la carte d’un’ professionnel intervenant dans le système de santé : type de carte, numéro, période de validité.
2) Caractéristiques techniques de la ressource
|
Endpoint |
https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole |
|
Header |
ESANTE-API-KEY |
|
Méthodes HTTP associées |
GET, POST |
|
Paramètres de recherche |
_id, name, given, family, mailbox-mss, number-smartcard, type-smartcard, active, role, speciality, _lastUpdated, _total, organization, practitioner |
|
Paramètres de requête |
_count, _include |
3) Paramètres de recherche
| Nom | Type | Description |
|---|---|---|
| _id | token | ID de la ressource |
| _lastUpdated | date | Renvoie uniquement les ressources qui ont été mises à jour pour la dernère fois comme spécifié par la période donnée (eq, ne, gt, lt, ge, le, ap). Plus d’informations sur les [dates] (https://build.fhir.org/search.html#date) |
| _since | date | |
| _total | string | |
| active | token | Recherche les ressources PractitionerRole actives |
| as-sp-data-information-system | token | Recherche sur le système d’information |
| as-sp-data-registration-authority | token | Recherche sur l’autorité d’enregistrement |
| family | Recherche sur le nom d’exercice des professionnels intervenant dans le système de santé | |
| given | Recherche sur le prénom d’exercice des professionnels intervenant dans le système de santé | |
| identifier | token | Recherche sur l’identifiant du PractitionerRole |
| mailbox-mss | string | La Messagerie Sécurisées de Santé (MSS) du Professionnel |
| name | string | Une recherche définie par le serveur qui peut correspondre à n’importe quel champ de HumanName, ici sur le préfix correspondant à la civilité des professionnels de santé |
| number-smartcard | string | Recherche sur le numéro de carte des professionnels |
| organization | reference | Recherche les exercices professionnels et les situation d’exercice rattachés à la structure sélectionnée |
| practitioner | reference | Recherche les exercices professionnels et les situation d’exercice rattachés aux professionnels intervenant dans le système de santé |
| role | token | Recherche sur la profession/ la catégorie professionnelle/ la fonction/ le genre d’activité/ le mode d’exercice ou la section tableau des pharmacien |
| specialty | token | Recherche sur le savoir-faire ou le type de savoir-faire |
| type-smartcard | token | Recherche sur le type de carte du professionnel |
4) Recherche d’exercice et d’activité du professionnel sur des critères spécifiques
Voici des exemples de requêtes sur les exercices et les activités du professionnel de sante.
4.1) Rechercher tout (sans critère)
Récit utilisateur : En tant que client de l’API, je souhaite récupérer l’ensemble des données correspondant aux situations d’exercice et exercices professionnels des PS.
Requêtes :
GET [base]/PractitionerRole
#récupère l'ensemble des PractitionersRoles (incluant les actifs et les inactifs)
GET [base]/Organization?_revinclude=PractitionerRole:organization #inclure les Organization qui sont référencées par les PractitionerRole (PractitionerRole + Organization)
GET [base]/Organization?_revinclude=PractitionerRole:practitioner #inclure les Practitioner qui sont référencés par les PractitionerRole (PractitionerRole + Practitioner)
GET [base]/Organization?_revinclude=PractitionerRole:* #inclure toutes les ressources qui sont réféencées les PractitionerRole (PractitionerRole + Practitioner + Oraganization)
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Practitioner Role found: id=005-5090000-6920000 code=FON-09
Practitioner Role found: id=005-5070000-6900000 code=FON-09
Practitioner Role found: id=005-5080000-6920000 code=FON-AU
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole"// create the client:
var client = FhirTestUtils.createClient();
var bundle = client.search().forResource(PractitionerRole.class).returnBundle(Bundle.class).execute();
for (var roleEntry : bundle.getEntry()) {
// print PractitionerRole data:
var role = (PractitionerRole) roleEntry.getResource();
logger.info("Practitioner Role found: id={} code={}", role.getIdElement().getIdPart(), role.getCodeFirstRep().getCodingFirstRep().getCode());
}$response = $client->request('GET', '/fhir/v1/PractitionerRole');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
echo("Practitioner Role found: id=".$practitionerRole->getId()." code=".$practitionerRole->getCode()[0]->getCoding()[0]->getCode()."\n");
}// 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 (_id)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher une ressource par son identifiant technique.
Requête :
GET [base]/PractitionerRole/005-5087586-6923328
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 1
Practitioner Role found: id=005-5087586-6923328
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole/005-5087586-6923328"// create the 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());$response = $client->request('GET', '/fhir/v1/PractitionerRole/005-5087586-6923328');
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $parser->parse((string) $response->getBody());
echo("Practitioner Role found: id=".$practitionerRole->getId()."\n");// create the client:
var client = FhirTestUtils.CreateClient();
var practitionerRole = client.Read<PractitionerRole>("PractitionerRole/005-5087586-6923328");
Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value}");4.3) Recherche par rôle (role)
La recherche par le paramètre “role” permet de rechercher les PractitionerRole selon différents référentiels. Voici les différents référentiels disponibles :
| Type | Description | Système | Lien / Options |
|---|---|---|---|
| Profession | Type d’organization | http://interopsante.org/fhir/CodeSystem/fr-v2-3307 | GEOGRAPHICAL-ENTITY ou LEGAL-ENTITY |
| Catégorie professionnelle | JDV_J99-InseeNAFrav2Niveau5-RASS | https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle | https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle |
| Fonction TRE_R21-Fonction | TRE_R21-Fonction | https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction | https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction |
| Fonction TRE-R96-AutreFonctionSanitaire | TRE-R96-AutreFonctionSanitaire | https://mos.esante.gouv.fr/NOS/TRE_R96-AutreFonctionSanitaire/FHIR/TRE-R96-AutreFonctionSanitaire | https://mos.esante.gouv.fr/NOS/TRE_R96-AutreFonctionSanitaire/FHIR/TRE-R96-AutreFonctionSanitaire |
| Genre activité | JDV_J94-GenreActivite-RASS | https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite | https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite |
| Mode d’exercice | JDV_J95-ModeExercice-RASS | https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice | https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice |
| Metier Pharmacien Section Tableau CNOP | TRE_R06-SectionTableauCNOP | https://mos.esante.gouv.fr/NOS/TRE_R06-SectionTableauCNOP/FHIR/TRE-R06-SectionTableauCNOP | https://mos.esante.gouv.fr/NOS/TRE_R06-SectionTableauCNOP/FHIR/TRE-R06-SectionTableauCNOP |
| Metier Pharmacien Sous Section Tableau CNOP | TRE_G05-SousSectionTableauCNOP | https://mos.esante.gouv.fr/NOS/TRE_G05-SousSectionTableauCNOP/FHIR/TRE-G05-SousSectionTableauCNOP | https://mos.esante.gouv.fr/NOS/TRE_G05-SousSectionTableauCNOP/FHIR/TRE-G05-SousSectionTableauCNOP |
Lorsque vous souhaitez rechercher sur un type particulier, utilisez la combinaison du système et du code souhaité :
PractitionerRole?role=<system>%7C<code>
Quelques exemples :
PractitionerRole?role=http://interopsante.org/fhir/CodeSystem/fr-v2-3307%7CLEGAL-ENTITYRecherche par type d’organization LEGAL-ENTITYPractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle%7CCRecherche par catégorie professionnelle TRE_R09-CategorieProfessionnelle avec le code C “Civil”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction%7CFON-02Recherche par fonction TRE_R21-Fonction avec le code FON-02 “Associé dans une société d’exercice (SEL ou SCP)”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R96-AutreFonctionSanitaire/FHIR/TRE-R96-AutreFonctionSanitaire%7CGENR03Recherche par autres fonctions du domaine sanitaire TRE-R96-AutreFonctionSanitaire avec le code 400 “Aide-soignant”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite%7CGENR03Recherche par genre d’activité JDV_J94-GenreActivite-RASS avec le code GENR03 “Remplacement dans une activité de soins”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice%7CSRecherche par Mode d’exercice JDV_J95-ModeExercice-RASS avec le code S “Salarié”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_R06-SectionTableauCNOP/FHIR/TRE-R06-SectionTableauCNOP%7CSRecherche par Section du tableau de l’Ordre des Pharmaciens TRE_R06-SectionTableauCNOP avec le code A “Pharmacien titulaire officine”PractitionerRole?role=https://mos.esante.gouv.fr/NOS/TRE_G05-SousSectionTableauCNOP/FHIR/TRE-G05-SousSectionTableauCNOP%7CDARecherche par Sous-Section du tableau de l’Ordre des Pharmaciens TRE_G05-SousSectionTableauCNOP avec le code DA “Pharmacien adjoint”
4.3.1) Recherche par profession et par catégorie professionnelle
Récit utilisateur : En tant que client de l’API, je souhaite rechercher tous les chirurgiens-dentistes (code profession= “40”) en formation (code catégorie = “E”).
Requête :
GET [base]/PractitionerRole?role=40&role=E
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Practitioner Role found: id=005-480000-6510001 codes=https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction:FON-47|https://mos.esante.gouv.fr/NOS/TRE_G15-ProfessionSante/FHIR/TRE-G15-
ProfessionSante:40|https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle:E|https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite:GENR02|https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice:L
Practitioner Role found: id=005-490000-6510000 codes=https://mos.esante.gouv.fr/NOS/TRE_R21-Fonction/FHIR/TRE-R21-Fonction:FON-47|https://mos.esante.gouv.fr/NOS/TRE_G15-ProfessionSante/FHIR/TRE-G15-
ProfessionSante:40|https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle:E|https://mos.esante.gouv.fr/NOS/TRE_R22-GenreActivite/FHIR/TRE-R22-GenreActivite:GENR02|https://mos.esante.gouv.fr/NOS/TRE_R23-ModeExercice/FHIR/TRE-R23-ModeExercice:
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole?role=40&role=E"// create the client:
var client = FhirTestUtils.createClient();
var firstCodeClause = PractitionerRole.ROLE.exactly().code("40");
var secondCodeClause = PractitionerRole.ROLE.exactly().code("E");
var bundle = client.search()
.forResource(PractitionerRole.class)
.where(firstCodeClause)
.and(secondCodeClause)
.returnBundle(Bundle.class).execute();
for (var roleEntry : bundle.getEntry()) {
// print PractitionerRole data:
var role = (PractitionerRole) roleEntry.getResource();
var roleCodes = role.getCode().stream().map(code ->
code.getCoding().stream().map(coding -> coding.getSystem() + ":" + coding.getCode()).collect(Collectors.joining("|"))
).collect(Collectors.joining(" - "));
logger.info("Practitioner Role found: id={} codes={}", role.getIdElement().getIdPart(), roleCodes);
}$response = $client->request('GET', '/fhir/v1/PractitionerRole?role=40&role=E');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
$codes = '';
$index = 0;
foreach ($practitionerRole->getCode() as $cc){
/** @var $cc \DCarbone\PHPFHIRGenerated\R4\FHIRElement\FHIRCodeableConcept */
foreach ($cc->getCoding() as $c) {
if($index++>0){
$codes .= '|';
}
$codes .= $c->getSystem().":".$c->getCode();
}
}
echo("Practitioner Role found: id=".$practitionerRole->getId()." codes=".$codes."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("role=40").Add("role","E")
.LimitTo(50);
var bundle = client.Search<PractitionerRole>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var practitionerRole = be.Resource as PractitionerRole;
var roleCodes = "";
foreach(var c in practitionerRole.Code)
{
var codings = "";
foreach(var code in c.Coding)
{
codings = codings + code.System + ":" + code.Code + "|";
}
roleCodes = roleCodes + " - " + codings;
}
Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value} code={roleCodes}");
}4.4) Recherche par spécialité (specialty)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher tous les chirurgiens-dentistes (code profession= “40”) ayant une spécialité ordinale “orthopédie dento-faciale” (code spécialité = “SCD01”).
Requête :
GET [base]/PractitionerRole?role=40&specialty=SCD01
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Practitioner Role found: id=005-400000 codes=https://mos.esante.gouv.fr/NOS/TRE_G15-ProfessionSante/FHIR/TRE-G15-ProfessionSante:40|https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle:C|urn:oid:1.2.250.1.213.2.28:SCD01
Practitioner Role found: id=005-390000 codes=https://mos.esante.gouv.fr/NOS/TRE_G15-ProfessionSante/FHIR/TRE-G15-ProfessionSante:40|https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle:C|urn:oid:1.2.250.1.213.2.28:SCD01
Practitioner Role found: id=005-380000 codes=https://mos.esante.gouv.fr/NOS/TRE_G15-ProfessionSante/FHIR/TRE-G15-ProfessionSante:40|https://mos.esante.gouv.fr/NOS/TRE_R09-CategorieProfessionnelle/FHIR/TRE-R09-CategorieProfessionnelle:C|urn:oid:1.2.250.1.213.2.28:SCD01
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole?role=40&specialty=SCD01"// create the client:
var client = FhirTestUtils.createClient();
var codeClause = PractitionerRole.ROLE.exactly().code("40");
var specialityClause = PractitionerRole.SPECIALTY.exactly().code("SCD01");
var bundle = client.search()
.forResource(PractitionerRole.class)
.where(codeClause)
.and(specialityClause)
.returnBundle(Bundle.class).execute();
for (var roleEntry : bundle.getEntry()) {
// print PractitionerRole data:
var role = (PractitionerRole) roleEntry.getResource();
// concat roles
var roleCodes = role.getCode().stream().map(code ->
code.getCoding().stream().map(coding -> coding.getSystem().concat(":").concat(coding.getCode())).collect(Collectors.joining("|"))
).collect(Collectors.joining(" - "));
// concat speciality
roleCodes = roleCodes.concat("|")
.concat(role.getSpecialtyFirstRep().getCodingFirstRep().getSystem())
.concat(":")
.concat(role.getSpecialtyFirstRep().getCodingFirstRep().getCode());
logger.info("Practitioner Role found: id={} codes={}", role.getIdElement().getIdPart(), roleCodes);
}$response = $client->request('GET', '/fhir/v1/PractitionerRole?role=40&specialty=SCD01');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
$codes = '';
$index = 0;
foreach ($practitionerRole->getCode() as $cc){
/** @var $cc \DCarbone\PHPFHIRGenerated\R4\FHIRElement\FHIRCodeableConcept */
foreach ($cc->getCoding() as $c) {
if($index++>0){
$codes .= '|';
}
$codes .= $c->getSystem().":".$c->getCode();
}
}
echo("Practitioner Role found: id=".$practitionerRole->getId()." codes=".$codes."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("role=40").Add("specialty", "SCD01")
.LimitTo(50);
var bundle = client.Search<PractitionerRole>(q);
foreach (var be in bundle.Entry)
{
// print ids:
var practitionerRole = be.Resource as PractitionerRole;
var roleCodes = "";
// concat roles
foreach(var c in practitionerRole.Code)
{
var codings = "";
foreach(var code in c.Coding)
{
codings = codings + code.System + ":" + code.Code + "|";
}
roleCodes = roleCodes + " - " + codings;
}
// concat specialty
foreach (var c in practitionerRole.Specialty)
{
var codings = "";
foreach (var code in c.Coding)
{
codings = codings + code.System + ":" + code.Code + "|";
}
roleCodes = roleCodes + " - " + codings;
}
Console.WriteLine($"PractitionerRole found: id={practitionerRole.IdElement.Value} code={roleCodes}");
}4.5) Recherche par type de carte (type-smartcard)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les cartes de type CPS.
Requête :
GET [base]/PractitionerRole?type-smartcard=CPS
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Practitioner Role found: id=005-54002-100000
Practitioner Role found: id=005-54001
Practitioner Role found: id=005-54000-100000
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole?type-smartcard=CPS"// create the client:
var client = FhirTestUtils.createClient();
// create the date search parameter :
var smartCardClause = new StringClientParam("type-smartcard").matches().value("CPS");
var bundle = client.search()
.forResource(PractitionerRole.class)
.where(smartCardClause)
.returnBundle(Bundle.class).execute();
for (var roleEntry : bundle.getEntry()) {
// cast entry :
var role = (PractitionerRole) roleEntry.getResource();
// print update date & id :
logger.info("Organization found: id={}", role.getIdElement().getIdPart());
}$response = $client->request('GET', '/fhir/v1/PractitionerRole?type-smartcard=CPS');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
echo("Practitioner Role found: id=".$practitionerRole->getId()."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("type-smartcard=CPS")
.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}");
}4.6) Recherche par professionnel (practitioner)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les situations d’exercice et exercices professionnels d’un PS en partant de son identifiant technique ( = “003-138020” dans l’exemple ).
Requête :
GET [base]/PractitionerRole?practitioner=003-138020`
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/PractitionerRole?practitioner=003-138020"// create the client:
var client = FhirTestUtils.createClient();
var pratictionerSearchClause = PractitionerRole.PRACTITIONER.hasId("003-138020");
var bundle = client.search()
.forResource(PractitionerRole.class)
.where(pratictionerSearchClause)
.returnBundle(Bundle.class).execute();
for (var roleEntry : bundle.getEntry()) {
// print PractitionerRole data:
var role = (PractitionerRole) roleEntry.getResource();
logger.info("Practitioner Role found: id={} practitioner={}", role.getIdElement().getIdPart(), role.getPractitioner().getReference());
}$response = $client->request('GET', '/fhir/v1/PractitionerRole?practitioner=003-138020');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
echo("Practitioner Role found: id=".$practitionerRole->getId()." practitioner=". $practitionerRole->getPractitioner()->getReference() ."\n");
}// create the client:
var client = FhirTestUtils.CreateClient();
var q = new SearchParams()
.Where("practitioner=003-138020")
.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} practitioner={practitionerRole.Practitioner.Reference}");
}4.7) Recherche par statut
Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les ressources 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/v1/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());
}$response = $client->request('GET', '/fhir/v1/PractitionerRole?active=true');
/** @var $practitionerRoles \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$practitionerRoles = $parser->parse((string) $response->getBody());
foreach($practitionerRoles->getEntry() as $entry){
/** @var $practitionerRole \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRPractitionerRole */
$practitionerRole = $entry->getResource();
echo("Practitioner Role found: id=".$practitionerRole->getId()." active=". $practitionerRole->getActive() ."\n");
}// 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: