An apparatus configured to electronically produce at least a part of a medical report, the apparatus and/or a component of the apparatus implementing: a question tree, the question tree comprising a plurality of question nodes, at least some of the question nodes representing a question, wherein at least one of the questions is related to and depends upon the answer of another of the questions; a report node tree comprising a plurality of report nodes, wherein at least one of the report nodes comprises and/or represents a text template; and an engine adapted to - receive inputs, at least one of the inputs relating to the question of a selected question node of the plurality of question nodes, - store the input in the selected question node and/or associated therewith, - identify at least one affected report node associated with the selected question node, wherein, once the at least one affected report node has been identified, the engine changes a property of at least one of the at least one affected report nodes; wherein the engine is adapted to receive a first set of inputs related to question nodes of a branch of the question tree, a branch of the question tree comprising a plurality of question nodes that may be concatenated each related to at least one question node of the branch, and wherein the engine is further adapted to change a visibility property of affected report nodes associated with the question nodes of the branch based on the first set of inputs and, in response to a change of one of the inputs of the first set of inputs, the engine is adapted to change the visibility property of at least one report node corresponding directly to the changed input, in addition to any report nodes depending from the at least one report node corresponding directly to the changed input and wherein the apparatus further comprises a memory adapted to store the received inputs, wherein, when the changed input is changed back to that given in the first set of inputs, the engine is adapted to change the visibility property of at least one report node corresponding to the changed input, in addition to report nodes depending from the at least one report node and which have a corresponding stored input. a question tree, the question tree comprising a plurality of question nodes, at least some of the question nodes representing a question, wherein at least one of the questions is related to and depends upon the answer of another of the questions; a report node tree comprising a plurality of report nodes, wherein at least one of the report nodes comprises and/or represents a text template; and an engine adapted to - receive inputs, at least one of the inputs relating to the question of a selected question node of the plurality of question nodes, - store the input in the selected question node and/or associated therewith, - identify at least one affected report node associated with the selected question node, - receive inputs, at least one of the inputs relating to the question of a selected question node of the plurality of question nodes, - store the input in the selected question node and/or associated therewith, - identify at least one affected report node associated with the selected question node, wherein, once the at least one affected report node has been identified, the engine changes a property of at least one of the at least one affected report nodes; wherein the engine is adapted to receive a first set of inputs related to question nodes of a branch of the question tree, a branch of the question tree comprising a plurality of question nodes that may be concatenated each related to at least one question node of the branch, and wherein the engine is further adapted to change a visibility property of affected report nodes associated with the question nodes of the branch based on the first set of inputs and, in response to a change of one of the inputs of the first set of inputs, the engine is adapted to change the visibility property of at least one report node corresponding directly to the changed input, in addition to any report nodes depending from the at least one report node corresponding directly to the changed input and wherein the apparatus further comprises a memory adapted to store the received inputs, wherein, when the changed input is changed back to that given in the first set of inputs, the engine is adapted to change the visibility property of at least one report node corresponding to the changed input, in addition to report nodes depending from the at least one report node and which have a corresponding stored input.