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
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
url | uri | 0..1 | URL canonique du Questionnaire. |
identifier | Identifier[] | 0..* | Identifiants externes (numéro CRF, OID). |
version | string | 0..1 | Version. |
name | string | 0..1 | Nom machine. |
title | string | 0..1 | Titre lisible. |
status | code | 1..1 | Obligatoire. État de publication. |
subjectType | code[] | 0..* | Types de sujet possibles (Patient, Group…). |
code | Coding[] | 0..* | Code LOINC du formulaire (PHQ-9 = 44249-1). |
item | BackboneElement[] | 0..* | Items du formulaire (récursifs). |
item.linkId | string | 1..1 | Obligatoire. Clé unique référencée par QuestionnaireResponse. |
item.text | string | 0..1 | Libellé affiché. |
item.type | code | 1..1 | Obligatoire. Type d'item (voir liste). |
item.required | boolean | 0..1 | Réponse obligatoire. |
item.repeats | boolean | 0..1 | Item ou groupe répétable. |
item.readOnly | boolean | 0..1 | Lecture seule (champs calculés). |
item.enableWhen | BackboneElement[] | 0..* | Logique de saut conditionnel. |
item.answerValueSet | canonical | 0..1 | ValueSet des réponses autorisées. |
item.answerOption | BackboneElement[] | 0..* | Options de réponse inlinées. |
item.initial | BackboneElement[] | 0..* | Valeur(s) initiale(s). |
item.item | BackboneElement[] | 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 :
{
"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
linkIdmanquant ou dupliqué — chaque item DOIT avoir un linkId unique. La QuestionnaireResponse correspond aux items via linkId.- Type
groupavec une réponse — un group ne porte jamais de réponse, seulement des sous-items. required=truesansenableWhen— 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.