Introduction
About this page
The thinking reported on this page is for the moment just that: initial ideas on what an 'archetype design pattern' might be, and how it could be formalised / described. Anyone is welcome to throw in ideas here and propose changes or a completely different approach.
Conceptual approach #1 - using software design pattern approach
Author: Thomas Beale
What is an archetype design pattern (ADP)?
The archetype formalism and model can be used to represent all kinds of things, in many different ways - often there is more than one possibility for a given requirement. It is not always apparent what the best way, or what is accepted and in use by the modelling community. This leads to a need for accepted archetype design patterns (ADPs), which model authors and tool-builders can assume and use.
Design pattern template
The following set of headings provides a standard template for documenting an ADP.
| Heading |
Content description |
|---|---|
| Name |
The name of the pattern. |
| Domain use case |
The domain use cases to which it applies. Detailed descriptions wil typically be on other pages. |
| Pattern description |
Natural language description of the pattern, how it works, possibly including diagrams. |
| Formal expression |
Expression in form of ADL excerpt, or URL referring to definitive example archetype online. |
| Use (optional) |
Specific domain areas of applicability. |
| Misuse (optional) |
Specific domain problems that users might expect to use this ADP, which should be solved by other means. |
| Examples |
Examples of this pattern in the form of references to published archetypes & use context. |
| Tool Support (optional) |
Support for this ADP in archetype or other modelling tools. |
| Developers |
List of authors and contributors of this design pattern. |
| Revision History |
list of{date, status, who, reason for change} of this ADP. |
Design pattern catalogue
Coded or free text response
| Coded or free text response |
|
|---|---|
| Domain use case |
This pattern addresses the situation where a response at a single data point can be in either coded form or plain text. A typical example is a field whose value is the name of a disease, which can be chosen by the user from a terminology subset, but may also be enterable as text if the disease is not found. |
| Pattern description |
TBD |
| Formal expression |
This can be achieved by the following ADL pattern using an external subset: |
definition
...
$attr_name matches {
DV_TEXT matches *
DV_CODED_TEXT matches {[$ac_code]}
}
...
ontology
constraint_definitions = <
[$lang] = <
[$ac_code] = <
text = <"$text">
description = <"$description">
>
>
>
constraint_bindings = <
[$terminology] = <
[$ac_code] = <$url_to_refset>
>
>
All $vars are replaced when the pattern is instantiated, by normal ADL elements. Variable meanings:
$attr_name - name of enclosing attribute $ac_code - ac-code of form subset $lang - language in ontology section; repeat for each language $text - text of ac-code definition, e.g. 'type of infection' $description - description of ac-code definition e.g. 'this subset includes types of infection' $terminology - id of terminology to which ac-code has binding; must be in openEHR form, terminology_name(release) $url_to_refset - URL to the terminology subset
| Use (optional) | TBD |
| Misuse (optional) | TBD |
| Examples | TBD |
| Tool Support (optional) | TBD |
| Developers | |
| Revision History | 2009-01-10, draft, T Beale, Initial Writing |
Structured or Narrative
| |
Structured or Narrative |
|---|---|
| Domain use case |
This pattern applies to the situation where a larger amount of information may be expressed either structurally (i.e. as a number of items, typically in a tree or list structure) or narratively. The need is driven by the requirement to accommodate existing systems and / or users that can only supply data in narrative form, even though structured is the preferred data capture method. |
| Pattern description |
TBD |
| Formal expression |
TBD |
| Use (optional) |
TBD |
| Misuse (optional) |
TBD |
| Examples |
TBD |
| Tool Support (optional) |
TBD |
| Developers |
TBD |
| Revision History |
2010-01-12, draft, who, Initial writing |
Design proposals
TBD
Questionnaire
| Questionnaire |
|
|---|---|
| Domain use case |
This pattern addresses the very common case of 'questions' appearing in questionnaires for new patients, admissions and other purposes in provider enterprises. Such questions are characterised by the following:
|
| Pattern description |
TBD |
| Formal expression |
TBD |
| Use (optional) |
TBD |
| Misuse (optional) |
TBD |
| Examples |
TBD |
| Tool Support (optional) |
TBD |
| Developers |
TBD |
| Revision History |
2009-01-10, draft, Ian McNicoll, Initial Writing |
Prescence / Absence
| Presence/Absence |
|
|---|---|
| Domain use case |
This pattern addresses the need to express that a described feature, e.g. something on the colon wall in an endoscopy exam, is present or absent, in a standard computableway. |
| Pattern description |
TBD |
| Formal expression |
TBD |
| Use (optional) |
TBD |
| Misuse (optional) |
TBD |
| Examples |
TBD |
| Tool Support (optional) |
TBD |
| Developers |
TBD |
| Revision History |
2009-01-10, draft, who, xxx |
Design Proposals
Gastros - Koray Aalag - Dec 2009
My proposal is either:
1. to introduce to CLUSTER or its parent an extra attribute for presence (present|absent|indeterminate) and also flavours of null.
2. to develop a custom ADL syntax to make life easier for modellers (such as shorthand for local codes) so that this can automatically be generated in downstream artefacts.
I guess the 2nd option is more doable - and I suggest (as Ian did in the Nehta pathology models) to give values (Yes|No|Indeterminate) and then further specify flavours of null when the latter is selected. The reason why I inserted only Yes|No is a requirement of my current project; so pls. ignore that.
What process is needed?
The following headings describe questions that would need to be answered in the process of formalising the description and development process of ADPs.
What is the process for developing an ADP?
What do I do if I have an idea for an ADP?
TBD
How do I contribute to an ADP?
TBD
Who manages the editorial process for ADPs?
TBD
When is an ADP ready for use in tools?
TBD