Ressources
Device
1) Description métier de la ressource
Il s’agit d’une ressource qui regroupe les données complémentaires FINESS portant sur les « équipements matériels lourds :
numéro d’autorisation ARGHOS, période de validité, marque, numéro de série, code EML
2) Caractéristiques techniques de la ressource
Endpoint
https://gateway.api.esante.gouv.fr/fhir/v1/Device
Header
ESANTE-API-KEY
Méthodes HTTP associées
GET, POST
Paramètres de requête
_count, _include
3) Paramètres de recherche
Nom
Type
Description
_id
token
Recherche sur l’ID de la ressource HealthCare Service
_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
_since
date
_total
string
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
device-name
string
Le nom de l’équipement
identifier
token
Recherche sur l’identifiant de l’équipement matériel lourd
manufacturer
string
Recherche sur la marque des équipements matériels lourds
model
string
Recherche sur le modèle des équipements matériels lourds
number-authorization-arhgos
string
Recherche sur le numéro d’autorisation ARHGOS
organization
reference
Recherche les équipements matériels lourds rattachés à la structure sélectionnée
status
token
active, inactive, entered-in-error, unknown
type
token
Recherche sur le type de l’équipement matériel lourd
4) Recherche d’équipement matériel lourd (EML) sur critères
Voici des exemples de requêtes sur les équipements matériels lourds.
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 EML.
Exemples de requêtes :
GET [ base]/Device
#récupère l'ensemble des Devices (incluant les actifs et les inactifs)
GET [ base]/Device?_include= Device:organization #inclure les Organization qui sont référencées par les Devices (Device + Organization)
GET [ base]/Device?_include= * #inclure toutes les ressources qui sont référencées par les Devices
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Device found: id=002-3405564 AuthorizationARHGOS=76-91-1096
Device found: id=002-3405565 AuthorizationARHGOS=44-21-35510
Device found: id=002-3405566 AuthorizationARHGOS=44-21-50847
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device"
// create the client:
var client = FhirTestUtils . createClient ();
var bundle = client . search (). forResource ( Device . class ). returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Device data:
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={} AuthorizationARHGOS={}" , device . getIdElement (). getIdPart (), device . getExtensionByUrl ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" ). getValue ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
$extArhgos = getExtensionByUrl ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" , $device -> getExtension ());
echo ( "Device found: id=" . $device -> getId () . " AuthorizationARHGOS=" . $extArhgos -> getValueString () . " \n " );
}
var client = FhirTestUtils . CreateClient ();
var bundle = client . Search < Device >();
foreach ( var be in bundle . Entry )
{
// print ids:
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } AuthorizationARHGOS= { device . Extension . FindLast ( e => e . Url . Equals ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" )). Value } " );
}
4.2) Rechercher par date de mise à jour (_lastUpdated)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher toutes les EML mise à jour depuis une certaine date.
Exemples de requêtes :
GET [ base]/Device?_lastUpdated= ge2022-08-07 #Les Device ayant été mis à jour depuis le 07/08/2022 inclus
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Device found: id=002-3401015 AuthorizationARHGOS=32-31-1156
Device found: id=002-3122325 AuthorizationARHGOS=93-93-4364
Device found: id=002-3122046 AuthorizationARHGOS=93-93-67204
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device?_lastUpdated=ge2022-08-07T14%3A51%3A04"
// create the client:
var client = FhirTestUtils . createClient ();
// create the date search parameter :
var dateParam = new DateClientParam ( "_lastUpdated" );
var bundle = client . search ()
. forResource ( Device . class )
. where ( dateParam . afterOrEquals (). second ( "2022-08-07T14:51:04" ))
. returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Device data:
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={} AuthorizationARHGOS={}" , device . getIdElement (). getIdPart (), device . getExtensionByUrl ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" ). getValue ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device?_lastUpdated=ge2022-08-07T14%3A51%3A04' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
$extArhgos = getExtensionByUrl ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" , $device -> getExtension ());
echo ( "Device found: id=" . $device -> getId () . " AuthorizationARHGOS=" . $extArhgos -> getValueString () . " \n " );
}
// create the client:
var client = FhirTestUtils . CreateClient ();
var q = new SearchParams ()
. Where ( "_lastUpdated=ge2022-08-07T14:51:04" )
. LimitTo ( 50 );
var bundle = client . Search < Device >( q );
foreach ( var be in bundle . Entry )
{
// print ids:
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } AuthorizationARHGOS= { device . Extension . FindLast ( e => e . Url . Equals ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" )). Value } " );
}
4.3) Rechercher un matériel par son numéro ARHGOS (number-authorization-arhgos)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher un EML à partir de son numéro ARHGOS.
Exemples de requêtes :
GET [ base]/Device?number-authorization-arhgos= 93-93-67204 #Les device ayant le numéro ARHGOS = 93-93-67204
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 1
Device found: id=002-3122046 type=05602
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device?number-authorization-arhgos=93-93-67204"
// create the client:
var client = FhirTestUtils . createClient ();
// create the type search parameter :
var arhgosParam = new StringClientParam ( "number-authorization-arhgos" );
var bundle = client . search ()
. forResource ( Device . class )
. where ( arhgosParam . contains (). value ( "93-93-67204" ))
. returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Organization ids:
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={} type={}" , device . getIdElement (). getIdPart (), device . getType (). getCodingFirstRep (). getCode ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device?number-authorization-arhgos=93-93-67204' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
echo ( "Device found: id=" . $device -> getId () . " type=" . $device -> getType () -> getCoding ()[ 0 ] -> getCode () . " \n " );
}
// create the client:
var client = FhirTestUtils . CreateClient ();
var q = new SearchParams ()
. Where ( "number-authorization-arhgos=93-93-67204" )
. LimitTo ( 50 );
var bundle = client . Search < Device >( q );
foreach ( var be in bundle . Entry )
{
// print ids:
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } AuthorizationARHGOS= { device . Extension . FindLast ( e => e . Url . Equals ( "https://apifhir.annuaire.sante.fr/ws-sync/exposed/structuredefinition/Device-numberAuthorizationARHGOS" )). Value } " );
}
4.4) Rechercher par type EML (type)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher tous les EML de type “Scanographe à utilisation médicale”.
Remarque :
Les valeurs possibles du type EML sont disponibles dans le référentiel TRE_R272-EquipementMaterielLourd des NOS.
Exemples de requêtes :
GET [ base]/Device?type= https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R272-EquipementMaterielLourd%2FFHIR%2FTRE-R272-EquipementMaterielLourd%7C05602 #Critère de recherche sur le type EML
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Device found: id=002-3405555 | type=05602
Device found: id=002-3405559 | type=05602
Device found: id=002-3405562 | type=05602
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R272-EquipementMaterielLourd%2FFHIR%2FTRE-R272-EquipementMaterielLourd%7C05602"
// create the client:
var client = FhirTestUtils . createClient ();
// create the type search parameter :
var typeSearchClause = Organization . TYPE . exactly (). systemAndValues (
"https://mos.esante.gouv.fr/NOS/TRE_R272-EquipementMaterielLourd/FHIR/TRE-R272-EquipementMaterielLourd" , "05602" );
var bundle = client . search ()
. forResource ( Device . class )
. where ( typeSearchClause )
. returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Device data:
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={} | type={}" , device . getIdElement (). getIdPart (), device . getType (). getCodingFirstRep (). getCode ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device?type=https%3A%2F%2Fmos.esante.gouv.fr%2FNOS%2FTRE_R272-EquipementMaterielLourd%2FFHIR%2FTRE-R272-EquipementMaterielLourd%7C05602' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
echo ( "Device found: id=" . $device -> getId () . " type=" . $device -> getType () -> getCoding ()[ 0 ] -> getCode () . " \n " );
}
// create the client:
var client = FhirTestUtils . CreateClient ();
var q = new SearchParams ()
. Where ( "type=https://mos.esante.gouv.fr/NOS/TRE_R272-EquipementMaterielLourd/FHIR/TRE-R272-EquipementMaterielLourd|05602" )
. LimitTo ( 50 );
var bundle = client . Search < Device >( q );
foreach ( var be in bundle . Entry )
{
// print Device data
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } | type= { device . Type . Coding [ 0 ]. Code } " );
}
4.5) Rechercher par son identifiant (identifier)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher un EML à partir de son identifiant.
Exemples de requêtes :
GET [ base]/Device?v1/identifier= 32-31-1156%2C93-93-4364 #Critère de recherche sur l'identifiant
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
total: 1
Device found: id=32-31-1156
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device?v1/identifier=32-31-1156%2C93-93-4364"
// create the client:
var client = FhirTestUtils . createClient ();
// create the identifier search parameters :
var identifierParams = Device . IDENTIFIER . exactly (). codes ( "32-31-1156" , "93-93-4364" );
var bundle = client . search ()
. forResource ( Device . class )
. where ( identifierParams )
. returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Device data
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={}" , device . getIdentifierFirstRep (). getValue ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device?identifier=32-31-1156%2C93-93-4364' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
echo ( "Device found: id=" . $device -> getId () . " \n " );
}
// create the client:
var client = FhirTestUtils . CreateClient ();
var q = new SearchParams ()
. Where ( "identifier=32-31-1156,93-93-4364" )
. LimitTo ( 50 );
var bundle = client . Search < Device >( q );
foreach ( var be in bundle . Entry )
{
// print ids:
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } " );
}
4.6) Rechercher par statut (status)
Récit utilisateur : En tant que client de l’API, je souhaite rechercher les EML actifs.
Exemples de requêtes :
GET [ base]/Device?status= active #actif
GET [ base]/Device?status= inactive #inactif
Réponse (simplifiée) :
HTTP 200 OK
resourceType: Bundle
type: searchset
Device found: id=device-147 | status=Active
Device found: id=device-389 | status=Active
Device found: id=device-146 | status=Active
Exemples de code :
curl -H "ESANTE-API-KEY: XXXX-XXXX-XXXX-XXXXX" "https://gateway.api.esante.gouv.fr/fhir/v1/Device?status=active"
// create the client:
var client = FhirTestUtils . createClient ();
// create the active search parameters :
var activeParams = Device . STATUS . exactly (). code ( Device . FHIRDeviceStatus . ACTIVE . toCode ());
var bundle = client . search ()
. forResource ( Device . class )
. where ( activeParams )
. returnBundle ( Bundle . class ). execute ();
for ( var deviceEntry : bundle . getEntry ()) {
// print Device data
var device = ( Device ) deviceEntry . getResource ();
logger . info ( "Device found: id={} | status={}" , device . getIdElement (). getIdPart (), device . getStatus (). getDisplay ());
}
$response = $client -> request ( 'GET' , '/fhir/v1/Device?status=active' );
/** @var $devices \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRBundle*/
$devices = $parser -> parse (( string ) $response -> getBody ());
foreach ( $devices -> getEntry () as $entry ){
/** @var $device \DCarbone\PHPFHIRGenerated\R4\FHIRResource\FHIRDomainResource\FHIRDevice */
$device = $entry -> getResource ();
echo ( "Device found: id=" . $device -> getId () . " | status=" . $device -> getStatus () -> getValue () . " \n " );
}
// create the client:
var client = FhirTestUtils . CreateClient ();
var q = new SearchParams ()
. Where ( "status=active" )
. LimitTo ( 50 );
var bundle = client . Search < Device >( q );
foreach ( var be in bundle . Entry )
{
// print Device data
var device = be . Resource as Device ;
Console . WriteLine ( $"Device found: id= { device . IdElement . Value } | status= { device . Status . Value } " );
}
Code source des exemples
Vous retrouverez le code source de ces exemples sur notre repository git: