OperationDefinition — détail : opérations FHIR
Spécification machine-lisible des opérations FHIR ($everything,
$validate, $translate, $evaluate-measure...).
Permet aux clients de découvrir les capacités avancées du serveur.
Rôle des opérations $-prefixed
Les opérations FHIR sortent du cadre REST pur (GET/POST/PUT/DELETE) pour exposer des
fonctions métier transactionnelles : POST /Patient/123/$everything,
POST /ConceptMap/$translate. OperationDefinition publie le contrat de ces
opérations.
system, type, instance
| Niveau | URL | Exemple |
|---|---|---|
system=true | POST /$op | $convert (à la racine du serveur) |
type=true | POST /[type]/$op | POST /Patient/$match |
instance=true | POST /[type]/[id]/$op | POST /Patient/123/$everything |
parameters in/out
Chaque opération déclare ses paramètres typés :
use=in— entrée.use=out— sortie.min,max— cardinalité.type— type FHIR (string, date, Bundle, ressource).searchType— pour les paramètres de recherche.part— sous-paramètres (paramètres composites).
Exemple : $everything sur Patient
{
"resourceType": "OperationDefinition",
"id": "patient-everything",
"url": "http://hl7.org/fhir/OperationDefinition/Patient-everything",
"version": "5.0.0",
"name": "Everything",
"title": "Fetch Patient Record",
"status": "active",
"kind": "operation",
"code": "everything",
"resource": ["Patient"],
"system": false,
"type": false,
"instance": true,
"parameter": [{
"name": "start",
"use": "in",
"min": 0,
"max": "1",
"type": "date",
"documentation": "The date range relates to care dates, not record currency dates."
}, {
"name": "end",
"use": "in",
"min": 0,
"max": "1",
"type": "date"
}, {
"name": "return",
"use": "out",
"min": 1,
"max": "1",
"type": "Bundle",
"documentation": "The bundle type is searchset."
}]
} Pièges courants
- kind=query au lieu d'operation —
queryest pour les recherches paramétrées (alias de search),operationpour les actions effectives. - Aucun parameter return — toute opération doit déclarer son
out. - system/type/instance tous false — au moins un doit être
true. - URL canonique mutable — l'URL ne doit pas changer entre versions.