ServiceRequest — Demande de procédure, biologie ou imagerie
La ressource d'ordonnance FHIR pour tout ce qui n'est pas un médicament : examen biologique, imagerie, kinésithérapie, intervention, soins infirmiers.
Objet de la ressource
ServiceRequest est la ressource générique de demande de service de santé. Elle couvre
aussi bien la prescription d'un bilan sanguin (LOINC 58410-2), la
demande d'une IRM cérébrale, la demande de séances de kinésithérapie, qu'une
consultation de spécialité. Le médicament a sa propre ressource — MedicationRequest
— pour le distinguer (workflow différent, dosage, dispensation, voie d'administration).
ServiceRequest se positionne dans le pattern Request du workflow FHIR : une intention de faire, qui se concrétise par une Procedure (ou DiagnosticReport côté résultat) une fois l'acte exécuté. Une chaîne typique : ServiceRequest → Task → Procedure / DiagnosticReport.
Champs clés
La StructureDefinition liste 33 éléments de premier niveau. Les principaux :
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Référence métier locale (n° d'ordonnance, n° de bon). |
basedOn | Reference(CarePlan | ServiceRequest | MedicationRequest)[] | 0..* | Demande qui découle d'un plan de soins ou d'une prescription parent. |
status | code | 1..1 | État du cycle de vie : draft, active, on-hold, revoked, completed, entered-in-error, unknown. |
intent | code | 1..1 | Nature de l'intention : proposal, plan, directive, order, original-order, reflex-order, filler-order, instance-order, option. |
category | CodeableConcept[] | 0..* | Catégorie (Laboratory procedure, Imaging, Counselling…). SNOMED CT typiquement. |
priority | code | 0..1 | routine, urgent, asap, stat. |
code | CodeableReference | 0..1 | L'acte demandé. LOINC pour la biologie, RadLex / SNOMED pour l'imagerie, CCAM (FR) pour les actes médicaux. |
subject | Reference(Patient | Group | Location | Device) | 1..1 | Sujet de l'examen (généralement Patient). |
encounter | Reference(Encounter) | 0..1 | Visite associée. |
occurrence[x] | dateTime | Period | Timing | 0..1 | Date / planning souhaité pour l'exécution. |
authoredOn | dateTime | 0..1 | Date de création de la demande. |
requester | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | 0..1 | Prescripteur. |
performer | Reference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson)[] | 0..* | Exécutant souhaité (laboratoire, service d'imagerie…). |
reason | CodeableReference(Condition | Observation | DiagnosticReport | DocumentReference)[] | 0..* | Motif clinique de la demande. |
specimen | Reference(Specimen)[] | 0..* | Échantillons associés (pour les analyses biologiques). |
bodySite | CodeableConcept[] | 0..* | Site anatomique cible (pour l'imagerie ou les biopsies). |
note | Annotation[] | 0..* | Annotations libres du prescripteur. |
Cycle de vie (status & intent)
ServiceRequest hérite du workflow.Request de FHIR. Le couple
status × intent dirige toute la machine à états :
intent=proposal+status=draft— proposition à l'étude.intent=order+status=active— ordre actif transmis à l'exécutant.intent=filler-order— ordre généré par l'exécutant lui-même (typique en imagerie quand le système RIS découpe l'examen en sous-actes).status=on-hold— suspendu temporairement.status=revoked— annulé avant exécution.status=completed— acte exécuté, attend la création de Procedure / DiagnosticReport.
Exemple JSON
Prescription d'un hémogramme complet (NFS, LOINC 58410-2) pour Patient
« example », par le Dr Jones, à exécuter par le laboratoire ACME :
{
"resourceType": "ServiceRequest",
"id": "lab-cbc",
"status": "active",
"intent": "order",
"category": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "108252007",
"display": "Laboratory procedure"
}]
}],
"priority": "routine",
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "58410-2",
"display": "Complete blood count (hemogram) panel - Blood by Automated count"
}]
},
"subject": { "reference": "Patient/example" },
"encounter": { "reference": "Encounter/example" },
"authoredOn": "2026-05-14T09:15:00+01:00",
"requester": { "reference": "Practitioner/dr-jones" },
"performer": [{ "reference": "Organization/lab-acme" }],
"reasonCode": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "75102001",
"display": "Routine general medical examination"
}]
}],
"specimen": [{ "reference": "Specimen/blood-001" }]
} status=active+intent=order: la demande est exécutoire.categorySNOMED CT108252007= « Laboratory procedure ».codeen LOINC58410-2= NFS automatisée sur sang.specimenpointe vers un prélèvement existantSpecimen/blood-001.reasonCodeSNOMED CT75102001= examen médical de routine.
API REST
GET /ServiceRequest?subject=Patient/example&status=active— demandes actives d'un patient.GET /ServiceRequest?category=108252007&_lastUpdated=ge2026-05-01— demandes de biologie récentes.POST /ServiceRequest— créer une nouvelle demande.PUT /ServiceRequest/lab-cbc— mettre à jour (changement de statut, ajout d'une note).GET /ServiceRequest?_include=ServiceRequest:specimen— inclure les Specimen associés.GET /ServiceRequest?_revinclude=DiagnosticReport:based-on— récupérer aussi les rapports diagnostiques générés.
Profils nationaux
| Profil | Régulateur | Particularité |
|---|---|---|
| US Core ServiceRequest | HL7 US Realm — ONC EHR | Doit porter status, intent, subject Patient, code, authoredOn, requester. |
| US Core Laboratory Service Request | USCDI v3 | Restreint category à Laboratory et code à LOINC laboratoire. |
| FR Core BiologyServiceRequest | ANS | Slicing sur code, contraint à LOINC FR / NABM / CIQUAL. |
| IPS ServiceRequest | HL7 + CEN/TC 251 | Pour le résumé patient international. |
| AU eRequesting | HL7 Australia / ADHA | Profil obligatoire pour eOrders pathologie / imagerie médicaux. |
Pièges courants
- Mélange
codeetorderDetail— le code décrit le quoi,orderDetailprécise les modalités spécifiques. Ne jamais coder une modalité danscodevia un texte libre. - Oubli du
intent— il est obligatoire. Sans lui, le serveur rejette la création (HTTP 422). Choisir entreorder(transmission au filler) etplan(intention non encore transmise). - Confondre avec
MedicationRequest— un médicament passe par MedicationRequest, pas par ServiceRequest. Une chimiothérapie peut être les deux (la séance d'administration = ServiceRequest, le médicament = MedicationRequest, liés parbasedOn). - Status incohérent avec le workflow — passer de
activeàdraftest interdit. Toute transition doit respecter la machine à états (voir Request Pattern). - Identifiant local non porté — beaucoup de SIH oublient de remplir
identifieravec le numéro de bon d'ordonnance local, ce qui complique la rétro-réconciliation avec les systèmes legacy.
Ressources liées
- MedicationRequest — équivalent pour les médicaments.
- DiagnosticReport — résultat produit par l'exécution de la demande.
- Procedure — acte exécuté en réponse à la ServiceRequest.
- Specimen — prélèvement biologique référencé.
- Task — orchestration d'exécution entre placer et filler.
- HL7 v2 ORM^O01 — équivalent legacy.