FHIR Chat · QuestionnaireResponse Displays · questionnaire

Stream: questionnaire

Topic: QuestionnaireResponse Displays


view this post on Zulip Grey Faulkenberry (Mar 23 2022 at 23:16):

We're running into a question about how to report out QuestionnaireResponses. Specifically, we have a number of questions that are likert-scales from 1-5. For instance:

Never True 1 - 2 - 3 - 4 - 5 Always True

Because we have a lot of questions like this, we're using a ValueSet of 1-5, and then nested in that item is a sub-item where we have the labels:

                    "item": [
                        {
                            "extension": [
                                {
                                    "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-hidden",
                                    "valueBoolean": true
                                },
                                {
                                    "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
                                    "valueCodeableConcept": {
                                        "coding": [
                                            {
                                                "system": "http://hl7.org/fhir/questionnaire-item-control",
                                                "code": "lower",
                                                "display": "Lower-Bound"
                                            }
                                        ]
                                    }
                                }
                            ],
                            "linkId": "/aces/part1/physical_abuse/lower",
                            "text": "Never true",
                            "type": "display"
                        },
                        {
                            "extension": [
                                {
                                    "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-hidden",
                                    "valueBoolean": true
                                },
                                {
                                    "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
                                    "valueCodeableConcept": {
                                        "coding": [
                                            {
                                                "system": "http://hl7.org/fhir/questionnaire-item-control",
                                                "code": "upper",
                                                "display": "Upper-Bound"
                                            }
                                        ]
                                    }
                                }
                            ],
                            "linkId": "/aces/part1/physical_abuse/upper",
                            "text": "Always true",
                            "type": "display"
                        }
                    ]
                },

Our client wants us to present a report that users can understand, and they're worried that the end users of the report won't understand the results if the report says:

Question 15: Has your child ever suffered physical abuse? - 4

So we're trying to figure out how to pull the label that has some meaning. One suggestion was that in the QuestionnaireResponse, we could make the answer look something like this:

              {
                "valueCoding": {
                  "extension": [
                    {
                      "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue",
                      "valueDecimal": 4
                    }
                  ],
                  "code": "4",
                  "display": "4 where 1 is Never True and 5 is Always True"
                }
              }

The other suggestion involved matching the QuestionnaireResponse to the Questionnaire that it came from and pulling the answers from the Questionnaire directly. Is there a preferred way to do this? Or any suggestions?

view this post on Zulip Josh Mandel (Mar 24 2022 at 14:35):

You might consider using a value set based on https://loinc.org/LL3267-3 (or something similar that you define yourself for this purpose) which incorporates Likert semantics, rather than a value set of ordinal numbers. That way you could just display the concept names from your value set such as "To some extent"

view this post on Zulip Lloyd McKenzie (Mar 24 2022 at 16:17):

There are a bunch of ways to handle this. As Josh suggested, you can have specific choices with a particular meaning. You can also just have a display item at the top of the questions that says "choose a number from 1 to 5, where 1 means "Never true" and 5 means "Always true".

The mechanism that's closest to what you're wanting to do would be to define the item as type 'integer' and then use the item-control extension to choose a control of 'slider', and specify child display times with item-control to set the low and high labels for the slider. You don't want to set 'hidden' on the display items. And, of course, the downside is that you end up with integers rather than codes. (We haven't indicated that sliders are possible with coded ordinals - though it seems like it might be semi-feasible. Feel free to submit a tracker item for us to discuss the possibility.)

view this post on Zulip Grey Faulkenberry (Mar 24 2022 at 17:20):

So part of our issue is that we have set end points and labels that we have to use according to our end users. As long as there is a loinc codeset available, we would certainly use that (there's also an issue with scoring, in that for a number of these they want us to display 1-5, but if you select a 1, it's actually a score of 0, and if it's anything else, a score of 1, which is not a common way to do it).

But our main issue currently is actually NOT in the Questionnaire. We have successfully displayed the items to the users, and allowed them to appropriately select the correct answer. I've edited my above post to include the complete item in question. We actually tried sliders at first and decided it wasn't as clear as discrete answers for these types of questions (although that's certainly a UI problem not a FHIR problem).

Our issue is how to record it in the QuestionnaireResponse. Currently the response would be something like:

                "answer": [
                  {
                    "valueCoding": {
                      "extension": [
                        {
                          "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue",
                          "valueDecimal": 1
                        }
                      ],
                      "code": "5",
                      "display": "5"
                    }
                  }
                ],

And so the issue is that if you're trying to display the results to and end user, first of all the score is confusing (that's on us), but even if it wasn't, and it looked like this:

                "answer": [
                  {
                    "valueCoding": {
                      "extension": [
                        {
                          "url": "http://hl7.org/fhir/StructureDefinition/ordinalValue",
                          "valueDecimal": 5
                        }
                      ],
                      "code": "5",
                      "display": "5"
                    }
                  }
                ],

Having a value of 5 doesn't mean anything out of context. So we were trying to see if the best way to do it would be to place more context into the answer (like the above example where we had the display read "4 where 1 is Never True and 5 is Always True", so that if you were going to read the results directly from the QuestionnaireResponse you would have it). Or, would it be better to reference the Questionnaire, and then if you're going to display something, pull the values and labels from the Questionnaire for the context, and then just pull the answer from the QuestionnaireResponse.

view this post on Zulip Lloyd McKenzie (Mar 24 2022 at 19:16):

The 'display' for the answer needs to be the same as the 'display' for the option/value set item in the Questionnaire. There's no expectation for those to differ - and some validators might spit out warnings if they do differ.

view this post on Zulip Brian Postlethwaite (Mar 24 2022 at 21:17):

Or plain reject them as errors (the Telstra Health one would, and mine will eventually too)

view this post on Zulip Brian Postlethwaite (Mar 24 2022 at 21:19):

And the ordinal value can be the same on multiple questions too (so you could have code 1 have weight 0, and 2-5 have weight 1 quite happily)


Last updated: Apr 12 2022 at 19:14 UTC