Questionnaire Actions / Steps

In FHIR Questionnaire, we are trying to get a patient to answer a series of questions through a web page prior to refilling. Based on their answers we either allow them to refill or show them a message why they cannot refill. Can you provide some suggestions on using FHIR Questionnaire to or another FHIR specification to inform the web page to perform an action?

One suggestions was to use:
{
“linkId”: “6”,
“type”: “group”,
“enableWhen”: [
{
“question”: “1”,
“operator”: “=”,
“answerString” : “Yes”
}
],
“item”: [
{
“linkId”: “6.1”,
“text”: “Continue Refill”,
“type”: “display”
}
],
“item”: [
{
“linkId”: “6.2”,
“text”: “http://url/submit”,
“type”: “display”
}
]
}

Appreciate any feedback.

hi. how easy is it to to decide? It sounds like what we call an ‘active’ questionnaire. Have you look at the “SDC” (Structured Data Capture) guide?

Hi,

Appreciate your response. Reviewed SDC ‘active’ form, does this apply to the item level in the Questionnaire? From what I can tell, this occurs at the top level extension (i.e. Questionnaire.extension:submissionEndpoint). Curious if you also might have some examples?

SDC: //fhir/uv/sdc/2019May/
Endpoint: http://hl7.org/fhir/uv/sdc/2019May/extension-sdc-questionnaire-endpoint.html
Behave: http://hl7.org/fhir/uv/sdc/2019May/sdc-questionnaire-behave-definitions.html

Thank you

Active forms don’t publicly expose their items - instead they point to a server that the client hits to receive each question in turn - which is based on the answers received. There are a number of examples here: http://build.fhir.org/ig/HL7/sdc/adaptive.html

Ah yes, I also ran across that link but was trying to avoid the chattiness a web / mobile client with a server.

From reading the link below, how does a web / mobile client know next action (i.e. stop refill vs refill)?
“Step 6: If the Assessment Center determines that the assessment is done, it will respond with the final results which will contain all the questions that were answered, along with the answers, the individual scores and the overall score.”

Also, it appears using enableWhen can drive branching in the FHIR Questionnaire. Please correct me if my interpretation of the specification is incorrect.
“item”: [
{
“linkId”: “1”,
“text”: “Are there any allergy or medication changes since your last order?”,
“type”: “choice”,
“answerOption”: [
{
“valueString”: {
“code”: “Yes”
},
“valueString”: {
“code”: “No”
}
}
],
“item”: [
{
“linkId”: “1.1”,
“type”: “group”,
“enableWhen”: [
{
“question”: “1”,
“operator”: “=”,
“answerString” : “Yes”
}
],
“item”: [
{
“linkId”: “1.1.1”,
“text”: “Cannot Refill”,
“type”: “display”
}
]
}
]
}
]

Thank you

You can absolutely use enableWhen to define the logic - it’s a question of whether you want to expose that logic (and whether you expect client systems to be able to handle it).

If using the adaptive form approach, if the questionnaire is deemed complete, then the final call will come back with a QuestionnaireResponse with a status of ‘completed’ and no further questions.