Questionnaires and the RM
Background
As more healthcare systems and institutions adopt openEHR, more requirements and needs they require to be met, in this case Questionnaires. Since the issue of handling usual clinical information in structured data is already settled, another very usual mean of acquiring valuable information about an individual is by asking them to fill in a Questionnaire. These Questionnaires are a set of questions for obtaining statistically useful or personal information.
Health services should be shaped by the needs of the patients they look after and what matters most to them. Surveys and questionnaires enable patients to speak up and healthcare providers to listen, as they gather information that can't be picked up by a stethoscope in an examination. While some patients may shy from providing feedback in person, surveys offer a chance to do so privately. By sharing their experiences patients can help their healthcare suppliers to identify issues quicker, and implement plans for improving care.
Design Requirements
The answers to these questions can vary from free text, boolean, ordinal, etc. The questions themselves can also vary from specific value "What is your weight today?" to "How do you feel about your weight?". And this presents one of the issues: this value from "What is your weight today?" could be identified as being a weight observation quantity, and eventually shown when querying for weight observation history.
Some of these questionnaires are international guidelines, and registered content, for example ICHOM. Which means when modelled to Archetype the legal and proprietary information needs to be accurate and valid.
It also means that when modelling these questionnaires all content should be presented exactly as they are defined, same texts/strings, same labels, same "commas". Even though between questionnaires there are shared questions, in their essence, but with synonymous words or different verbal tense (example: "Is this questionnaire useful to you?" "Was this questionnaire useful to you?", both questions evaluate the usefulness of the questionnaire, just the temporal mark of when the surgery occurred changed).
Some of the "groups" of questions can be the same between the different questionnaires, so it should be possible to reuse "groups". Though so far, since most of questionnaires were thought in separate and having paper forms in mind, this grouping would be more of a feature for new questionnaires than for modelling current use cases.
FHIR already has a well defined structure specific for Questionnaires (https://www.hl7.org/fhir/questionnaire.html). This could be helpful to see how to implement it in openEHR, also to think about compatibility between the two.
Current Solutions
There can be multiple solutions when modelling a questionnaire, but each have drawbacks, some more than others.
A total of 5 possible solutions were tested and evaluated in order to reach a current usable solution and ideas for possible improvement
Tested solutions:
The tested solutions can be seen here:Testing Questionaires.zip
Q1_HeartFailure - Specific new Observation arquetype in usual normal template.
Q2_HeartFailure - Generic arquetype with generic all possible elements, intended to be constrained to specifications when building template.
Q3_HeartFailure - Usual clinical archetypes modelled into questions either at template or at form/interface.
Q4_HeartFailure - FHIR model recreated in openehr generic arquetypes for reference.
Q5_HeartFailure - Mix between generic arquetype for questionnaire and specific new Cluster arquetype.
Conclusions:
Q1 - This approach can be seen in archetypes available at CKM. Doesn't feel like proper way using Observation for such a context specific information. Also it is harder to manage reuse and to add structure/sections.
Q2 - Could be used by tools for questionnaire generation, but would prove to be inefficient and confusing when querying data. Also it is harder to reuse and adding structure/sections would only be possible at form level.
Q3 - It is a very complex approach: finding archetypes and clinical context into every question of the questionnaire. Ex: for question "Have you ever had atrial fibrilation?" If yes use the Diagnosis archetype to save it as a proper diagnosis with ICD10 code, if no Exclusion of diagnosis archetype. The data would be very high quality, structured clinically valid data, but it would take a lot of time to model, plus there would be subjective questions who still don't have existing proper archetypes.
Q4 - FHIR structure mimic.
Q5 - This approached seems to be, within current tools and specification, the most appropriate solution. It allows to query for all Questionnaires, or specific (Cluster); at template it can be mixed with some proper clinical archetypes (weight,height); enables re-usability by braking down a questionnaire into groups of questions (Clusters).
In summary:
In summary Q5 was the most appealing solution, but it still looks like a "get it", comparing with how other clinical information is properly covered by the specification, since there's no specific ENTRY arquetype Questionnaire.
Possible RM Enhancements
Thinking about adding a new ENTRY type to the specification called "Questionnaire" a possible structure would look like this:
Where the structure is similar to OBSERVATION, since the questionnaires can have an event history (example pre & pos surgery). But it marks questionnaires as it's own entry, same way ADMIN_ENTRY has it's own. Also a new addition could be mapping to who is willing to map already questions to existing clinical models.
archetype (adl_version=1.4) openEHR-EHR-QUESTIONNAIRE.heart_failure__baseline_characteristics.v0 concept [at0000] -- Heart failure baseline characteristics language original_language = <[ISO_639-1::en]> description original_author = < ["name"] = <"Samuel Frade"> ["organisation"] = <"BinaryScope Solutions"> ["email"] = <"samuel.frade@binaryscope.pt"> ["date"] = <"2018-11-17"> > details = < ["en"] = < language = <[ISO_639-1::en]> purpose = <"Patient self-assessment of how heart failure affects his or her daily life"> use = <""> misuse = <""> copyright = <"© openEHR Foundation"> > > lifecycle_state = <"Initial"> other_contributors = <> other_details = < ["current_contact"] = <"Heather Leslie, Ocean Informatics, heather.leslie@oceaninformatics.com"> ["licence"] = <"This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/."> ["revision"] = <"1.0.0"> ["build_uid"] = <"c969cd0a-8caf-4da2-b872-23ef58ae63f2"> ["original_publisher"] = <"openEHR Foundation"> ["original_namespace"] = <"org.openehr"> ["MD5-CAM-1.0.1"] = <"88AF7BC619F0DF958D2F00293756F398"> ["custodian_namespace"] = <"org.openehr"> ["custodian_organisation"] = <"openEHR Foundation"> > definition QUESTIONNAIRE[at0000] matches { -- Heart failure baseline characteristics mappings matches{ ELEMENT[at0015] matches { openEHR-EHR-EVALUATION.problem_diagnosis.v1/data[at0001]/items[at0002] matches {snomedct::49436004::Atrial fibrillation}} ELEMENT[at0023] matches { openEHR-EHR-OBSERVATION.tobacco_use.v1/data[at0001]/events[at0002]/data[at0003]/items[at0004] matches {*} } ELEMENT[at0027] matches { openEHR-EHR-OBSERVATION.body_weight.v2/data[at0002]/events[at0003]/data[at0001]/items[at0004] matches {*} } } data matches { HISTORY[at0001] matches { -- Event Series events cardinality matches {1..*; unordered} matches { EVENT[at0002] occurrences matches {0..1} matches { -- Any event data matches { ITEM_TREE[at0003] matches { -- Tree items cardinality matches {0..*; unordered} matches { ELEMENT[at0015] occurrences matches {0..1} matches { -- Have you ever been told by your doctor that you have atrial fibrillation? value matches { DV_CODED_TEXT matches { defining_code matches { [local:: at0016, -- No at0017, -- Yes at0018] -- Unknown } } } } ELEMENT[at0019] occurrences matches {0..1} matches { -- Have you ever been told by your doctor that you've had a heart attack (this is sometimes called a myocardial infarction, or MI)? value matches { DV_CODED_TEXT matches { defining_code matches { [local:: at0020, -- No at0021, -- Yes at0022] -- Unknown } } } } ELEMENT[at0023] occurrences matches {0..1} matches { -- Do you currently smoke, or have you smoked cigarettes or tobacco over the past year? value matches { DV_CODED_TEXT matches { defining_code matches { [local:: at0024, -- No at0025, -- Yes at0026] -- Unkown } } } } ELEMENT[at0027] occurrences matches {0..1} matches { -- What is your current body weight? value matches { C_DV_QUANTITY < property = <[openehr::124]> list = < ["1"] = < units = <"kg"> magnitude = <|0.0..1000.0|> > ["2"] = < units = <"[lb_av]"> magnitude = <|0.0..2000.0|> > > > } } ELEMENT[at0049] occurrences matches {0..1} matches { -- If echocardiogram performed, please state range of patient’s ejection fraction: value matches { DV_CODED_TEXT matches { defining_code matches { [local:: at0051, -- <30% at0052, -- 30-40% at0053, -- 40-50% at0054] -- >50% } } } } ELEMENT[at0055] occurrences matches {0..*} matches { -- Please indicate diagnostic categories: value matches { DV_CODED_TEXT matches { defining_code matches { [local:: at0056, -- Ischaemic at0057, -- Hypertensive at0058, -- Valvular at0059, -- Familial at0060, -- Peripartum at0061, -- Myocarditis/Inflammatory at0062, -- Infiltrative at0063, -- Stress/Takotsubo at0064, -- Idiopathic/Other at0065] -- Chagas' Disease } } } } } } } } } } } } > >