Medical Imaging Interaction Toolkit
2024.12.99-0da743f6
Medical Imaging Interaction Toolkit
|
Abstract base class for all types of questions used in a Form. More...
#include <mitkQuestion.h>
Public Member Functions | |
Question () | |
virtual | ~Question () |
std::string | GetQuestionText () const |
Get the literal question. More... | |
void | SetQuestionText (const std::string &question) |
Set the literal question. More... | |
bool | IsRequired () const |
Check whether a response to this question is required to complete a form. More... | |
void | SetRequired (bool required=true) |
Set whether a resonse to this question is required to complete a form. More... | |
virtual std::string | GetRequiredText () const |
Get the text that should be displayed to clearly mark a question as required. More... | |
virtual bool | HasFileResponses () const |
Query whether the responses given to this question are file paths. More... | |
virtual std::vector< fs::path > | SubmitFileResponses (const fs::path &basePath) const |
Attach response files to submission. More... | |
Pure virtual functions | |
Question is an abstract base class. Derive from this class to add a new type of question and override the following pure virtual functions. Please read the full documentation for all of these functions to fully understand implications and requirements. Do not forget to register any new type of question by calling IQuestionFactory::Register() like it is done in this module's activator class.
| |
virtual std::string | GetType () const =0 |
Return the type of a question as string, e.g. "Multiple choice" or "Drop-down". More... | |
virtual Question * | CreateAnother () const =0 |
Create a new instance of the derived question class type. More... | |
virtual std::vector< std::string > | GetResponsesAsStrings () const =0 |
Return the question's response(s) as strings. More... | |
virtual void | ClearResponses ()=0 |
Clear the/all response(s). More... | |
virtual bool | IsComplete () const =0 |
Check if a question is considered to be answered completely. More... | |
virtual void | FromJSON (const nlohmann::ordered_json &j)=0 |
Deserialize from JSON. More... | |
virtual void | ToJSON (nlohmann::ordered_json &j) const =0 |
Serialize to JSON. More... | |
Abstract base class for all types of questions used in a Form.
Please make sure to read the full documentation of the pure virtual functions in particular to fully understand implications and requirements.
Definition at line 31 of file mitkQuestion.h.
mitk::Forms::Question::Question | ( | ) |
|
virtual |
|
pure virtual |
Clear the/all response(s).
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::QuestionWithOtherOption, mitk::Forms::ScreenshotQuestion, mitk::Forms::QuestionWithOptions, and mitk::Forms::TextQuestion.
|
pure virtual |
Create a new instance of the derived question class type.
This method is mainly used by IQuestionFactory to create new instances from registered prototype instances based on a type string.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::CheckboxesQuestion, mitk::Forms::DropdownQuestion, mitk::Forms::MultipleChoiceQuestion, mitk::Forms::ParagraphQuestion, mitk::Forms::ShortAnswerQuestion, and mitk::Forms::ScreenshotQuestion.
|
pure virtual |
Deserialize from JSON.
Polymorphism and the use of base class pointers make it necessary to implement serialization through member functions. Using the pure native approach of the "JSON for Modern C++" library via free functions would lead to partially serialized instances of derived classes.
The actual implementation can and should still be located in a corresponding from_json() free function but we also need the indirection through this member function.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::CheckboxesQuestion, mitk::Forms::DropdownQuestion, mitk::Forms::MultipleChoiceQuestion, mitk::Forms::ParagraphQuestion, mitk::Forms::ShortAnswerQuestion, and mitk::Forms::ScreenshotQuestion.
std::string mitk::Forms::Question::GetQuestionText | ( | ) | const |
Get the literal question.
|
virtual |
Get the text that should be displayed to clearly mark a question as required.
This text is typically displayed as soon as a response to a required question is missing. The method can be overridden to customize the default text, e.g. for more complex types of questions, where specific guidance is beneficial.
|
pure virtual |
Return the question's response(s) as strings.
This is the single common generic interface for retrieving responses from all types of questions. It is typically used to store responses in text-based formats like CSV.
It is implemented as vector since certain types of questions like a checkboxes question may support multiple responses. Otherwise, return a vector with a single element.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::QuestionWithOtherOption, mitk::Forms::ScreenshotQuestion, mitk::Forms::QuestionWithOptions, and mitk::Forms::TextQuestion.
|
pure virtual |
Return the type of a question as string, e.g. "Multiple choice" or "Drop-down".
This method is essential for the deserialization of questions into their correct type, resp. derived class. The type string is used by IQuestionFactory to look up a registered prototype instance of a certain type to create another instance of it.
The type string does not have to match the class name or follow any other convention except for it must be unique amongst all question types. Prefer natural language like in the examples above in case it is used in a user interface to display a question's type.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::CheckboxesQuestion, mitk::Forms::DropdownQuestion, mitk::Forms::MultipleChoiceQuestion, mitk::Forms::ParagraphQuestion, mitk::Forms::ShortAnswerQuestion, and mitk::Forms::ScreenshotQuestion.
|
virtual |
Query whether the responses given to this question are file paths.
Always returns false
- override this method only if necessary. Typically used during submission to determine if any files should be attached.
Reimplemented in mitk::Forms::ScreenshotQuestion.
|
pure virtual |
Check if a question is considered to be answered completely.
This method is typically called when IsRequired() returns true
to determine whether the requirements are fulfilled.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::QuestionWithOtherOption, mitk::Forms::ScreenshotQuestion, mitk::Forms::QuestionWithOptions, and mitk::Forms::TextQuestion.
bool mitk::Forms::Question::IsRequired | ( | ) | const |
Check whether a response to this question is required to complete a form.
void mitk::Forms::Question::SetQuestionText | ( | const std::string & | question | ) |
Set the literal question.
void mitk::Forms::Question::SetRequired | ( | bool | required = true | ) |
Set whether a resonse to this question is required to complete a form.
A question is not required by default.
|
virtual |
Attach response files to submission.
This method is supposed to be called during submission only if HasFileResponses() returns true
. The given base path should then be used to copy any files. The returned paths should be relative to the base path and are used for submission instead of the return value of GetResponsesAsStrings().
Reimplemented in mitk::Forms::ScreenshotQuestion.
|
pure virtual |
Serialize to JSON.
Polymorphism and the use of base class pointers make it necessary to implement serialization through member functions. Using the pure native approach of the "JSON for Modern C++" library via free functions would lead to partially serialized instances of derived classes.
The actual implementation can and should still be located in a corresponding to_json() free function but we also need the indirection through this member function.
Implemented in mitk::Forms::LinearScaleQuestion, mitk::Forms::CheckboxesQuestion, mitk::Forms::DropdownQuestion, mitk::Forms::MultipleChoiceQuestion, mitk::Forms::ParagraphQuestion, mitk::Forms::ShortAnswerQuestion, and mitk::Forms::ScreenshotQuestion.