PROforma is an executable process modelling language that has been developed for the general purpose of building decision support and intelligent agents. It includes a formal specification language (as that term is used in software engineering) and a knowledge representation language (as understood in AI).
PROforma is essentially a first-order logic formalism extended to support decision making and plan execution, but it also incorporates a number of well known features of non-classical logics (e.g. modal logic, temporal logic) and two novel logics (LA, logic of argument and LOT, logic of obligation and time) to support decision making and action control.
PROforma has been successfully used to build and deploy a range of decision support systems, guidelines and other clinical applications.
Modelling Knowledge in PROforma
PROforma supports the definition of clinical guidelines and protocols in terms of:
A well-defined set of tasks that can be composed into networks representing plans or procedures carried out over time. These enable the high level structure of a process to be represented.
Logical constructs (such as situations, events, constraints, pre- and post-conditions, and inference rules) which allow the details of each task and inter-relationships between tasks to be defined using templates.
The PROforma task model divides tasks into four classes:
- Actions: represent some procedure that needs to be executed in the external environment (e.g. administering a drug or updating a database).
- Enquiries: represent points in a process at which information needs to be acquired from some person or external system.
- Decisions: points at which some choice is to be made, either about what to believe or what to do.
- Plans: collections of tasks that are grouped together for some reason, perhaps because they share a common goal or use a common resource, or need to be done at the same time.
General Characteristics of Tasks
- Any specific clinical task is seen as an instance of some more general class of tasks. Each class is eventually a specialisation of a root task. Any class can be further specialised into particular sub-types.
- When tasks are enacted, the communication of information between tasks is achieved by passing messages between encapsulated task objects, rather than by explicit procedure calls or other mechanisms that require access to the internal definition of a task.
- Every task inherits part of its specification from the classes above it in the hierarchy, expressed as a set of attributes. A task is distinguished from its parents by the possession of additional attributes, and distinguished from its siblings by different values for their common attributes.
- The properties and behaviour of each task type are determined by its attributes and the values attached to them. These determine how and when a task is processed when the electronic process of which they form a part is enacted.
- Attributes of the (top level) root task are generic and are inherited by each task class and sub-class; attributes of task classes are specific to that class and only inherited by sub-classes of that type.
Read more about PROforma on the ACL website.