ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

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 :

ChampTypeCardinalitéRôle
identifierIdentifier[]0..*Référence métier locale (n° d'ordonnance, n° de bon).
basedOnReference(CarePlan | ServiceRequest | MedicationRequest)[]0..*Demande qui découle d'un plan de soins ou d'une prescription parent.
statuscode1..1État du cycle de vie : draft, active, on-hold, revoked, completed, entered-in-error, unknown.
intentcode1..1Nature de l'intention : proposal, plan, directive, order, original-order, reflex-order, filler-order, instance-order, option.
categoryCodeableConcept[]0..*Catégorie (Laboratory procedure, Imaging, Counselling…). SNOMED CT typiquement.
prioritycode0..1routine, urgent, asap, stat.
codeCodeableReference0..1L'acte demandé. LOINC pour la biologie, RadLex / SNOMED pour l'imagerie, CCAM (FR) pour les actes médicaux.
subjectReference(Patient | Group | Location | Device)1..1Sujet de l'examen (généralement Patient).
encounterReference(Encounter)0..1Visite associée.
occurrence[x]dateTime | Period | Timing0..1Date / planning souhaité pour l'exécution.
authoredOndateTime0..1Date de création de la demande.
requesterReference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)0..1Prescripteur.
performerReference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson)[]0..*Exécutant souhaité (laboratoire, service d'imagerie…).
reasonCodeableReference(Condition | Observation | DiagnosticReport | DocumentReference)[]0..*Motif clinique de la demande.
specimenReference(Specimen)[]0..*Échantillons associés (pour les analyses biologiques).
bodySiteCodeableConcept[]0..*Site anatomique cible (pour l'imagerie ou les biopsies).
noteAnnotation[]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 :

json servicerequest-cbc.json
{
  "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.
  • category SNOMED CT 108252007 = « Laboratory procedure ».
  • code en LOINC 58410-2 = NFS automatisée sur sang.
  • specimen pointe vers un prélèvement existant Specimen/blood-001.
  • reasonCode SNOMED CT 75102001 = 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

ProfilRégulateurParticularité
US Core ServiceRequestHL7 US Realm — ONC EHRDoit porter status, intent, subject Patient, code, authoredOn, requester.
US Core Laboratory Service RequestUSCDI v3Restreint category à Laboratory et code à LOINC laboratoire.
FR Core BiologyServiceRequestANSSlicing sur code, contraint à LOINC FR / NABM / CIQUAL.
IPS ServiceRequestHL7 + CEN/TC 251Pour le résumé patient international.
AU eRequestingHL7 Australia / ADHAProfil obligatoire pour eOrders pathologie / imagerie médicaux.

Pièges courants

  • Mélange code et orderDetail — le code décrit le quoi, orderDetail précise les modalités spécifiques. Ne jamais coder une modalité dans code via un texte libre.
  • Oubli du intent — il est obligatoire. Sans lui, le serveur rejette la création (HTTP 422). Choisir entre order (transmission au filler) et plan (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 par basedOn).
  • Status incohérent avec le workflow — passer de active à draft est interdit. Toute transition doit respecter la machine à états (voir Request Pattern).
  • Identifiant local non porté — beaucoup de SIH oublient de remplir identifier avec 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.