Stream: cds hooks
Topic: Question Answered
Grahame Grieve (Feb 15 2018 at 20:20):
is anyone else interested in defining a hook to use to indicate that the patient has answered a question while filling out a Questionniare to create a QuestionnaireResponse? This would allow some knowledge source to vary the next question(s) based on existing answers.
Lloyd McKenzie (Feb 15 2018 at 20:35):
I think the varying needs to be expressed in the Questionnaire design. Having the Questionnaire design change on the fly would be quite problematic.
Grahame Grieve (Feb 15 2018 at 20:37):
of course, it's easier if you can do that. but there's all sorts of sophisticated algorithms for doing this that it makes no sense to try and figre out a general purpose computing langauge/infrastructure for. There's lots of work in production based on AI/big data analysis where you figure what the next question is based on the answer to the existing questions
Brian Postlethwaite (Feb 15 2018 at 21:00):
This sounds like custom transitions between sections, which I agree we don't really cover
Brian Postlethwaite (Feb 15 2018 at 21:00):
And I don't know that cds hooks is the right way to do it, but I don't have a better suggestion either.
Kevin Olbrich (Feb 15 2018 at 21:05):
We do fairly complex questionnaires for Providers, but the way we do it is to use a cds-hook to identify when it's appropriate to start the questionnaire and return a card with a smart-app link to the actual form. Then we return the results of that interaction back to the EHR
Grahame Grieve (Feb 15 2018 at 21:36):
right. you can outsource the entire interaction to a different app. But this means that you can't integrate with the data source either
Lloyd McKenzie (Feb 15 2018 at 21:40):
I'd tend to treat this as component questionnaires. At least then you have an immutable object to reference that defines the questions.
Kevin Olbrich (Feb 15 2018 at 21:40):
What do you mean by 'integrate with the data source'? We can still make FHIR calls to the EHR as needed.
Grahame Grieve (Feb 15 2018 at 21:45):
Lloyd, don't understand your point. Kevin, yes, you can. Right now, with such limited access to EHR logic as is implemented, that's not enough for many people
Malcolm Pradhan (Feb 15 2018 at 22:32):
I'm interested to see how cds-hooks may work for this, particularly issues around the granularity of the hook. Rather than a general event we trigger business logic based on the specific questionnaire items that are involved in the expressions so the business logic is not triggered every time any item is modified. We limit the output of the business logic to hiding/showing question groups and setting calculated items such as a BMI, not dynamically creating new questions.
We found that providing a general "hook" any time a user changed anything on the questionnaire slowed performance on larger questionnaires, but that may be implementation specific, we just starting with React/Redux at the time.
Lloyd McKenzie (Feb 15 2018 at 22:37):
Rather than having a hook indicate what questions are to be answered in a single large questionnaire, I'd rather have it indicate what questionnaires are to be answered in a set of small interrelated questionnaires. Otherwise it becomes too hard to validate that the questionnaire response is complete.
Grahame Grieve (Feb 15 2018 at 22:49):
you're making a lot of assumptions about who does what.
Grahame Grieve (Feb 15 2018 at 22:53):
what i imagined was that each time the user answered a question, the cds-hook would be invoked, which would return the next question, or an indication that the questionnaire was now complete, and a set of recommended actions.
The output would be both the questions and the answers
Kevin Olbrich (Feb 15 2018 at 22:57):
Yeah, I can see how that workflow and hook might be useful.
Lloyd McKenzie (Feb 15 2018 at 23:54):
So there'd be a new Questionnaire instance and a QuestionnaireResponse every time you answered a Question - and there'd be no "authoritative" Questionnaire - just a custom one the CDS system made up on the fly?
Grahame Grieve (Feb 16 2018 at 00:10):
don't know what you think that 'authoritative' means. I was thinking of adding questions on the fly, not making up new questionnaires all the time
Lloyd McKenzie (Feb 16 2018 at 01:01):
If there's a new question in the instance, that's a new Questionnaire. In order to validate the QuestionnaireResponse (or have any idea how to render it to allow adjustment), you need to point to the Questionnaire it was created against. If the Questionnaire is created on the fly, then you have a different Questionnaire instance for each QuestionnaireResponse.
Malcolm Pradhan (Feb 16 2018 at 01:17):
This sounds like Questionnaire is being used to implement a chatbot. I'm not sure how dialog-based systems are regarded wrt medical record. I guess the current model comes from the traditional hospital form that went through an approval process to be included as part of the medical record, so there is a governance process around the questionnaire and its use.
Grahame Grieve (Feb 16 2018 at 01:22):
"If there's a new question in the instance, that's a new Questionnaire".. because....?
Grahame Grieve (Feb 16 2018 at 01:23):
"you have a different Questionnaire instance for each QuestionnaireResponse" - yes
Lloyd McKenzie (Feb 16 2018 at 02:36):
At minimum it's a new Questionnaire version - and the QuestionnaireResponse would have to point to the specific version
Lloyd McKenzie (Feb 16 2018 at 02:36):
If you have a different Questionnaire instances for each QuestionnaireResponse, how can you know that the data from multiple QuestionnaireResponses are comparable?
Grahame Grieve (Feb 16 2018 at 03:07):
by the item.definition, if at all
Lloyd McKenzie (Feb 16 2018 at 03:12):
That sort of defeats the purpose of using a Questionnaire, I think?
Grahame Grieve (Feb 16 2018 at 03:14):
depends what your purpose is
Lloyd McKenzie (Feb 16 2018 at 03:59):
What would you do with the answers to a completely custom questionnaire?
Grahame Grieve (Feb 16 2018 at 04:12):
store them, display them, use item.definition
Chris Moesel (Feb 16 2018 at 14:00):
I'm a little late to the party, and probably saying something everyone already knows, but I will call out that the cqif-Questionnaire defined in Clinical Reasoning allows for callouts to CQL logic to determine if a question should be asked or not. This already provides a lot more flexibility than core Questionnaire since CQL can support arbitrary algorithms (w/ some limitations, of course -- it's not C). That said, it doesn't really support a potential meandering path of questions in a dynamically defined order.
Chris Moesel (Feb 16 2018 at 14:00):
Grahame Grieve (Feb 16 2018 at 19:55):
yes, for those doing CQL, this is useful, and a little step along the path, but it's not a workable replacement for a cds-hook for several reasons
Last updated: Apr 12 2022 at 19:14 UTC