This page is part of the Structured Data Capture FHIR IG (v3.0.0: STU 3) based on FHIR R4. This is the current published version. For a full list of available versions, see the Directory of published versions
Page standards status: Informative |
Contents:
Adaptive Forms follow an architecture where a questionnaire is not pre-defined, rather the questionnaire is dynamically developed based on previous answers to questions chosen from an item bank of questions. This type of administration is also known as Computerized Adaptive Testing (CAT), or administration of Adaptive Questionnaires. In these cases, a set of questions (typically 4 to 12) are administered from a question bank containing numerous questions. The selected questions are based on Item Response Theory (IRT) algorithms which look at the answers provided and select the next question based on IRT algorithms. The questions are selected to quickly obtain the necessary outcomes (e.g. assessing a person's physical function) using fewer questions rather than administering a large question bank. These small sets of questions still provide the necessary confidence and scores required to interpret the data appropriately as if the whole questionnaire was administered.
The section explains the process of administering an Adaptive Questionnaire and the actors (systems) involved. Figure 1 below shows the abstract model of the administration process.
Figure 1: Adaptive Questionnaire Administration Abstract Model
External Assessment Center: The External IRT based Assessment Center is a system that can administer a questionnaire based on IRT algorithms. The data that is necessary for the administration is only the initial item bank. The External Assessment Center does not need to know about the specific patient identity or any other clinical information. The Assessment Center will use algorithms recommended by the Questionnaire designer to determine how to administer the questionnaire.
Patient Facing Administration App: The Patient Facing Administration App is the actual app that is being used to present the questions to the patient. It can be an EHR, a SMART on FHIR App, an Independent PRO Administration App.
As shown in Figure 1 above, the Patient Facing Administration App (EHR, Care Delivery System, Independent App or SMART on FHIR App) acts as the client
and initiates the administration process.
The following section describes the steps that take place when completing an adaptive Questionnaire and also provides examples of the content sent to and received back from the 'next-question' operation. With regard to the server's response, it is possible that more than one new question is returned in the questionnaire, and previously sent questions that were unanswered might not be sent back by the server.
POST [base]/Questionnaire/$next-question
{ // start body
"resourceType": "QuestionnaireResponse",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt"
]
},// end of meta
// contained Questionnaire
"contained": [
{
"resourceType": "Questionnaire",
"id": "q",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-adapt"
]
},
"identifier": {
// identifier system and value for "Physical Function 2.0" questionnaire
},
//no items since initiating the adaptive questionnaire
...
}
], // end of contained Questionnaire
// reference to contained Questionnaire
"questionnaire": "#q",
"status": "in-progress",
...
//no items since it is just getting started
} // end body
{ // start response body
"resourceType": "QuestionnaireResponse",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt"
]
}, // end of meta
// contained Questionnaire
"contained": [
{
"resourceType": "Questionnaire",
"id": "q",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-adapt"
]
},
"identifier": {
// identifier system and value for "Physical Function 2.0" questionnaire
},
// First Item being sent back
"item": [
{
"linkId": "1.1", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "12345-6"
}
],
"text": "Are you able to walk for 30 minutes ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
} // end of item
]
}
] // end of contained Questionnaire
} // end response body
POST [base]/Questionnaire/$next-question
{ // start body
"resourceType": "QuestionnaireResponse",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt"
]
}, // end of meta
// contained Questionnaire
"contained": [
{
"resourceType": "Questionnaire",
"id": "q",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-adapt"
]
},
"identifier": {
// identifier system and value for "Physical Function 2.0" questionnaire
},
// List items here that have been already administered.
"item": [
{
"linkId": "1.1", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "12345-6",
}
],
"text": "Are you able to walk for 30 minutes ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
} // end of item
]
}
], // end of Contained Questionnaire
// references the contained Questionnaire
"questionnaire": "#q",
"status": "in-progress",
...
"item": [
// First Item being sent back with answer to be used to determine completeness or next question.
{
"linkId": "1.1", // unique id of the question within the questionnaire
"text": "Are you able to walk for 30 minutes ?",
"answer": [
{
"valueCoding": {
"system": "http://loinc.org",
"code": "LA1234"
}
}
]
} // end of item
]
} // end body
{ // start body
"resourceType": "QuestionnaireResponse",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt"
],
},// end of meta
// contained Questionnaire
"contained": [
{
"resourceType": "Questionnaire",
"id": "Id of the Questionnaire Instance on which operation is being invoked",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-adapt"
]
},
"identifier": {
// identifier system and value for "Physical Function 2.0" questionnaire
},
"item": [
// Item already administered
{
"linkId": "1.1", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "12345-6",
}
],
"text": "Are you able to walk for 30 minutes ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
}, // end of Item already administered
// New Item
{
"linkId": "1.2", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "23456-7",
}
],
"text": "Are you able to lift a chair to move it from one room to another ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
} // end of New Item
] // end of items
}
], // end of contained Questionnaire
// References the contained Questionnaire
"questionnaire": "#q",
"status": "in-progress",
...
"item": [
// First Item that was sent back with answer when requesting next question.
{
"linkId": "1.1", // unique id of the question within the questionnaire
"text": "Are you able to walk for 30 minutes ?",
"answer": [
{
"valueCoding": {
"system": "http://loinc.org",
"code": "LA1234"
}
}
]
}
] // end of item
} // end body
POST [base]/Questionnaire/$next-question
{ // start body
"resourceType": "QuestionnaireResponse",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt"
],
},// end of meta,
// contained Questionnaire
"contained": [
{
"resourceType": "Questionnaire",
"id": "Id of the Questionnaire Instance on which operation is being invoked",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-adapt"
]
},
"identifier": {
// identifier system and value for "Physical Function 2.0" questionnaire
},
"item": [
// Items already administered
{
"linkId": "1.1", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "12345-6",
}
],
"text": "Are you able to walk for 30 minutes ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
}, // end of item
{
"linkId": "1.2", // unique id of the question within the questionnaire
"code" : [
{
"system": "http://loinc.org",
"code": "23456-7",
},
],
"text": "Are you able to lift a chair to move it from one room to another ?",
"type": "choice",
"required": true,
"answerValueSet": "http://loinc.org/LA1234"
}, // end of item
...
// Since the questionnaire is completed, there will be 2 new items with the overall score and confidence.
{
// Mark the item as hidden (if the score should be hidden from the user)
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-hidden",
"valueBoolean": true
}
],
"linkId": "1.9", // unique id of the question within the questionnaire
"text": "Overall Score",
"type": "decimal",
"required": true,
"readOnly": true
}, // end of item
{
// Mark the item as hidden (if the confidence should be hidden from the user)
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-hidden",
"valueBoolean": true
}
],
"linkId": "1.10", // unique id of the question within the questionnaire
"text": "Score Confidence",
"type": "decimal",
"required": true,
"readOnly": true
} // end of item
]
}
], // end of contained Questionnaire
// references the contained Questionnaire
"questionnaire": "#q",
// completed Status
"status": "completed",
...
"item": [
// First Item that was previously sent back
{
"linkId": "1.1", // unique id of the question within the questionnaire
"text": "Are you able to walk for 30 minutes ?",
"answer": [
{
"valueCoding": {
"system": "http://loinc.org",
"code": "LA1234"
}
}
]
}, // end of item
{
"linkId": "1.2", // unique id of the question within the questionnaire
"text": "Are you able to lift a chair to move it from one room to another ?",
"type": "choice",
"answer": [
{
"valueCoding": {
"system": "http://loinc.org",
"code": "LA3534"
}
}
]
}, // end of item
...
// Since the questionnaire is completed, there will be 2 new items with the overall score and confidence.
{
"linkId": "1.9", // unique id of the question within the questionnaire
"text": "Overall Score",
"answer": [
{
"valueDecimal": "123.45"
}
]
},
{
"linkId": "1.10", // unique id of the question within the questionnaire
"text": "Score Confidence",
"answer": [
{
"valueDecimal": "0.95"
}
]
}
] // end of items
} // end body