Seeing we're on the topic, I will note that Horst's statement of the requirement (to be able to get a string of BPs regardless of in what context captured) is key to managing EHR data, and if this kind of thing cannot be done in general, systems will be quite inflexible. In an openEHR system, BPs are captured as Observations, which are a subtype of Entry. Entries always consist of objects of the same set of types (Entry, History, List, Cluster, Element, and a few others - see the upp-case names in the example below) are of the same form regardless of how captured; Observations representing BP (as opposed to heart rate, blood sugar or something else) always follow the same general model, described by the archetype for BP measurement, which I have reproduced below - mainly to show that there is quite a bit of complexity in properly recording a BP. And yet - this still can be treated as quite simple data in the EHR, and it can be queried in the same way, regardless of whether it was part of a neonatal exam, general exam, or whatever else.


You might think that this model of BP is too complicated; however it conforms to a general model of scientific observation, and we can write software which deals with all Observations mostly in the same generic way, with different processing just for different details.

The path set for any such archetype can be extracted by a tool, and are used for querying in any language.

- thomas beale


Horst Herb wrote:


On Mon, 22 Dec 2003 16:58, Andrew Ho wrote:


Maybe something like this:
------------------------------------
Translation_table=
 form1 {cardiovascular}
 form_1_item {blood pressure}
 form_1_item_value {any}

 form2 {diabetes}
 form_2_item {blood pressure}
 form_2_item_value {any}

transform_function {=}


archetype
openehr-ehr-observation.bp_measurement.draft
concept
[at0000] -- blood pressure measurement


description
author = <"Sam Heard <[EMAIL PROTECTED]>">
submission = <
organisation = <"openEHR Foundation">
date = <"2003-06-10">
>
version = <"version">
status = <"draft">
revision = <"1.0">
description("en") = <
purpose = <"Describe systemic blood pressure measurement result and protocol">
use = <"">
misuse = <"">
>
adl_version = <"0.9">
rights = <"">


definition
OBSERVATION[at0001] matches { -- blood pressure measurement
name matches { -- any synonym of BP
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0001]}
}
}
}
data matches {
HISTORY[at9001] matches { -- history
events cardinality matches {1..*} matches { EVENT[at9002] occurrences matches {1..1} matches { -- baseline
name matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0002]}
}
}
}
data matches { LIST_S[at1000] matches { -- systemic arterial BP
count matches {2..*}
ordered matches {True}
items cardinality matches {0..*} matches { ELEMENT[at1100] matches { -- systolic BP
name matches { -- any synonym of 'systolic'
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0002]}
}
}
}
value matches {
QUANTITY matches {
magnitude matches {0..1000}
property matches {"pressure"}
units matches {"mm[Hg]"}
}
}
}
ELEMENT[at1200] matches { -- diastolic BP
name matches { -- any synonym of 'diastolic'
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0003]}
}
}
}
value matches {
QUANTITY matches {
magnitude matches {0..900}
property matches {"pressure"}
units matches {"mm[Hg]"}
}
}
}
ELEMENT[at9000] occurrences matches {0..*} matches {*} -- unknown new item
}
}
}
}
EVENT[at9003] occurrences matches {0..*} matches { -- other events
name matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0010]}
}
}
}
data matches { use_node LIST_S [at0000]/data[at9001]/events[at9002]/data[at1000]/ -- list structure from first sample
}
}
}
}
} state matches {
HISTORY[at9001] matches { -- history
events cardinality matches {1..*} matches { EVENT[at9002] occurrences matches {1..1} matches { -- baseline
name matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0002]}
}
}
}
data matches { SINGLE_S[at2100] matches { -- patient state
item matches { ELEMENT[at2200] occurrences matches {0..1} matches { -- position
name matches { -- any synonym of 'patient position'
CODED_TEXT occurrences matches {0..1} matches {
definition matches {
COORDINATED_TERM matches {[ac0007]}
}
}
TEXT occurrences matches {0..1} matches {*} -- plain text allowed
} value matches { -- lying, sitting etc
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0008]}
}
}
}
}
ELEMENT[at9000] occurrences matches {0..*} matches {*} -- unknown new item
}
}
}
}
EVENT[at9003] occurrences matches {0..*} matches { -- other events
name matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0010]}
}
}
}
data matches { use_node SINGLE_S [at0000]/state[at9001]/events[at9002]/data[at2100]/ -- list structure from first sample
}
}
}
}
}


protocol existence matches {0..1} matches {
LIST_S[at9004] matches { -- list structure
count matches {1..1}
ordered matches {True}


items cardinality matches {0..*} matches {
ELEMENT[at3100] occurrences matches {0..1} matches { -- instrument
name matches { -- any synonym of 'instrument'
CODED_TEXT occurrences matches {0..1} matches {
definition matches {
COORDINATED_TERM matches {[ac0005]}
}
}
TEXT occurrences matches {0..1} matches {*} -- plain text allowed
} value matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0006]}
}
}
}
}
ELEMENT[at3300] occurrences matches {0..1} matches { -- cuff size
name matches { -- size of cuff
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0009]}
}
}
}
value matches {
CODED_TEXT matches {
definition matches {
COORDINATED_TERM matches {[ac0010]}
}
}
} }
ELEMENT[at9000] occurrences matches {0..*} matches {*} -- unknown new item
}
}
}
}



ontology primary_language = <"en"> languages_available = <"en", ...> terminologies_available = <"snomed_ct", ...>

term_definitions("en") = <
items("at0000") = <text = <"blood pressure measurement">;
description = <"the measurement of systemic arterial blood pressure which is deemed to represent the actual systemic blood pressure">>
items("at1000") = <text = <"blood pressure">; description = <"systemic arterial blood pressure">>
items("at1100") = <text = <"systolic">; description = <"the systemic arterial blood pressure in systolic phase">>
items("at1200") = <text = <"diastolic">; description = <"the systemic arterial blood pressure in diastolic phase">>
items("at2100") = <text = <"patient state">; description = <"the state of the patient during the measurement(s)">>
items("at2200") = <text = <"position">; description = <"the position of the patient at the time of measuring the blood pressure">>
items("at3100") = <text = <"instrument">; description = <"the instrument used to measure the blood pressure">>
items("at3300") = <text = <"cuff size">; description = <"the size of the cuff if a sphygmomanometer is used">>


-- structural terms
items("at9000") = <text = <"new item">; description = <"undescribed new item">>
items("at9001") = <text = <"history">; description = <"history Structural node">>
items("at9002") = <text = <"baseline event">; description = <"baseline event in event history">>
items("at9003") = <text = <"other event">; description = <"other event in event history">>
items("at9004") = <text = <"list structure">; description = <"list structure">>
>


constraint_definitions("en") = <
items("ac0001") = <text = <"BP">; description = <"any synonym of systemic blood pressure">>
items("ac0002") = <text = <"systolic">; description = <"any synonym of systolic">>
items("ac0003") = <text = <"diastolic">; description = <"any synonym of diastolic">>
items("ac0005") = <text = <"instrument">; description = <"any synonym of of instrument">>
items("ac0006") = <text = <"instrument type">; description = <"any valid instrument for the measurement of blood pressure">>
items("ac0007") = <text = <"position">; description = <"any synonym of patient position">>
items("ac0008") = <text = <"patient position">; description = <"lying, reclining, sitting, standing">>
items("ac0009") = <text = <"cuff size">; description = <"any valid cuff type">>
items("ac0010") = <text = <"BP cuff type">; description = <"neonatal, infant, child, adult, large adult">>
>


term_binding("snomed_ct") = <
items("at0000") = <[snomed_ct(2003)::163020007]> -- O/E Blood pressure reading items("at1000") = <[snomed_ct(2003)::364090009]> -- Systemic arterial pressure
items("at1100") = <[snomed_ct(2003)::163030003]> -- O/E - Systolic BP reading
items("at1200") = <[snomed_ct(2003)::163031004]> -- O/E - Diastolic BP reading
items("at2200") = <[snomed_ct(2003)::246273001]> -- patient position
items("at3100") = <[snomed_ct(2003)::57134006]> -- instrument
items("at3300") = <[snomed_ct(2003)::246153002]> -- type of cuff
>


   constraint_binding("snomed_ct") = <
       purpose=<"general practice">

items("ac0001") = <query("terminology", "terminology_id = snomed_ct; synonym_of [163020007]")>
items("ac0002") = <query("terminology", "terminology_id = snomed_ct; synonym_of [163030003]")> -- synonym_of systolic
items("ac0003") = <query("terminology", "terminology_id = snomed_ct; synonym_of [163031004]")> -- synonyms of diastolic
items("ac0005") = <query("terminology", "terminology_id = snomed_ct; synonym_of [57134006]")> -- synonyms of instrument
items("ac0006") = <query("terminology", "terminology_id = snomed_ct; has_relation [102002] with_target [57134006]")> -- is-a instrument
items("ac0007") = <query("terminology", "terminology_id = snomed_ct; synonym_of [246273001]")> -- synonyms of position
items("ac0008") = <query("terminology", "terminology_id = snomed_ct; has_relation [102002] with_target [246273001]")> -- is-a patient position
items("ac0009") = <query("terminology", "terminology_id = snomed_ct; synonym_of [246153002]")> -- synonyms of cuff type
items("ac0010") = <query("terminology", "terminology_id = snomed_ct; has_relation [102002] with_target [246153002]")> -- is-a cuff type
>




Reply via email to