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.

Questionnaire — Le formulaire structuré FHIR

PHQ-9, eCRF d'essai clinique, formulaire d'admission, PRO patient : Questionnaire est la ressource pivot du formulaire clinique structuré. Plus de 600 instruments publics indexés sur LOINC.

Objet de la ressource

Questionnaire est la définition d'un formulaire : items hiérarchiques, types de réponses, contraintes, logique de saut conditionnel (enableWhen), réponses pré-codées. La donnée réelle saisie par le patient ou clinicien va dans une QuestionnaireResponse qui pointe vers ce Questionnaire.

L'IG Structured Data Capture (SDC) publié par HL7 enrichit Questionnaire avec des extensions pour le rendering (afficher en grille, slider), le pré-remplissage à partir d'autres ressources FHIR, et l'export automatique vers Observation / Condition après soumission.

Champs clés

ChampTypeCardinalitéRôle
urluri0..1URL canonique du Questionnaire.
identifierIdentifier[]0..*Identifiants externes (numéro CRF, OID).
versionstring0..1Version.
namestring0..1Nom machine.
titlestring0..1Titre lisible.
statuscode1..1Obligatoire. État de publication.
subjectTypecode[]0..*Types de sujet possibles (Patient, Group…).
codeCoding[]0..*Code LOINC du formulaire (PHQ-9 = 44249-1).
itemBackboneElement[]0..*Items du formulaire (récursifs).
item.linkIdstring1..1Obligatoire. Clé unique référencée par QuestionnaireResponse.
item.textstring0..1Libellé affiché.
item.typecode1..1Obligatoire. Type d'item (voir liste).
item.requiredboolean0..1Réponse obligatoire.
item.repeatsboolean0..1Item ou groupe répétable.
item.readOnlyboolean0..1Lecture seule (champs calculés).
item.enableWhenBackboneElement[]0..*Logique de saut conditionnel.
item.answerValueSetcanonical0..1ValueSet des réponses autorisées.
item.answerOptionBackboneElement[]0..*Options de réponse inlinées.
item.initialBackboneElement[]0..*Valeur(s) initiale(s).
item.itemBackboneElement[]0..*Sous-items (récursifs).

Types d'item

Le binding item.type est required :

  • group — groupe d'items.
  • display — texte informatif, pas de réponse.
  • boolean — Oui / Non.
  • decimal, integer — nombres.
  • date, dateTime, time.
  • string, text — texte court / long.
  • url — URL.
  • choice, open-choice — sélection (avec autre).
  • attachment — pièce jointe.
  • reference — référence à une autre ressource FHIR.
  • quantity — valeur + unité.
  • coding — code seul (R5).

Exemple JSON

Extrait du PHQ-9 (Patient Health Questionnaire), avec 9 items LOINC, score 0–27. Items 1 et 2 ont des réponses par answerOption et answerValueSet respectivement :

json questionnaire-phq9.json
{
  "resourceType": "Questionnaire",
  "id": "phq9",
  "url": "http://example.org/Questionnaire/phq9",
  "version": "1.0.0",
  "name": "PHQ9",
  "title": "Patient Health Questionnaire (PHQ-9)",
  "status": "active",
  "subjectType": ["Patient"],
  "date": "2026-05-14",
  "publisher": "Example Org",
  "code": [{
    "system": "http://loinc.org",
    "code": "44249-1",
    "display": "PHQ-9 quick depression assessment panel"
  }],
  "item": [
    {
      "linkId": "1",
      "code": [{ "system": "http://loinc.org", "code": "44250-9" }],
      "text": "Sur les 2 dernières semaines, avez-vous éprouvé peu d'intérêt ou de plaisir pour faire les choses ?",
      "type": "choice",
      "required": true,
      "answerOption": [
        { "valueCoding": { "system": "http://loinc.org/LL358-3", "code": "LA6568-5", "display": "Pas du tout" }, "extension": [{ "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue", "valueDecimal": 0 }] },
        { "valueCoding": { "system": "http://loinc.org/LL358-3", "code": "LA6569-3", "display": "Plusieurs jours" }, "extension": [{ "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue", "valueDecimal": 1 }] },
        { "valueCoding": { "system": "http://loinc.org/LL358-3", "code": "LA6570-1", "display": "Plus de la moitié du temps" }, "extension": [{ "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue", "valueDecimal": 2 }] },
        { "valueCoding": { "system": "http://loinc.org/LL358-3", "code": "LA6571-9", "display": "Presque tous les jours" }, "extension": [{ "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue", "valueDecimal": 3 }] }
      ]
    },
    {
      "linkId": "2",
      "text": "Sur les 2 dernières semaines, vous êtes-vous senti(e) triste, déprimé(e) ou désespéré(e) ?",
      "type": "choice",
      "required": true,
      "answerValueSet": "http://loinc.org/vs/LL358-3"
    },
    {
      "linkId": "10",
      "text": "Score total PHQ-9",
      "type": "integer",
      "readOnly": true
    }
  ]
}

Pièges courants

  • linkId manquant ou dupliqué — chaque item DOIT avoir un linkId unique. La QuestionnaireResponse correspond aux items via linkId.
  • Type group avec une réponse — un group ne porte jamais de réponse, seulement des sous-items.
  • required=true sans enableWhen — un item required à 1 visible et non rempli bloque la soumission.
  • Score manuel — pour les PROMs (PHQ-9, MoCA, KCCQ…), utiliser les extensions SDC questionnaire-calculatedExpression pour calculer le score.
  • Copyright LOINC non respecté — citer le LOINC code de l'instrument et la version de l'instrument cité dans code.

Ressources liées

  • QuestionnaireResponse — réponses du patient ou du clinicien à ce Questionnaire.
  • Observation — peut être créée à partir d'items SDC.
  • ValueSet — référencé par answerValueSet.
  • Library — logique de score CQL/FHIRPath.