Thanks for your respose Greg.

I'm not really concerned about the details of specific archetypes - I just used 
the ubiquitous blood pressure one because that's the one used in a lot of the 
example documentation.

My question is more about the how AQL should handle querying data that conforms 
to archetypes that contain one or more one-to-many relationships.

John

> -----Original Message-----
> From: openehr-technical-bounces at openehr.org 
> [mailto:openehr-technical-bounces at openehr.org] On Behalf Of 
> Greg Caulton
> Sent: Wednesday, 25 February 2009 2:58 AM
> To: openehr-technical at openehr.org
> Subject: Re: AQL queries and one-many relationships
> 
> My assumption was that the 'contains
> openEHR-EHR-COMPOSITION.encounter.v1' will restrict the result set to
> be in this case blood pressure observations that were recorded on an
> encounter note (or any document identified as such).
> 
> If I make up an archetype called assessment you could have the
> following to get blood pressure results from two different document
> types - not sure if they intention was for all assessments to be
> designated as encounter notes though - perhaps.
> 
> SELECT o
> FROM
> EHR
> CONTAINS COMPOSITION c [openEHR-EHR-COMPOSITION.encounter.v1]
>      CONTAINS OBSERVATION o 
> [openEHR-EHR-OBSERVATION.blood_pressure.v1]   AND
> CONTAINS COMPOSITION a [openEHR-EHR-COMPOSITION.assessment.v1]
>      CONTAINS OBSERVATION o2 
> [openEHR-EHR-OBSERVATION.blood_pressure.v1]
> 
> 
> Greg
> 
> http://www.patientos.org
> 
> On Tue, Feb 24, 2009 at 7:00 AM,  
> <openehr-technical-request at openehr.org> wrote:
> > Send openEHR-technical mailing list submissions to
> > ? ? ? ?openehr-technical at openehr.org
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> > ? ? ? ?
> http://lists.chime.ucl.ac.uk/mailman/listinfo/openehr-technical
> > or, via email, send a message with subject or body 'help' to
> > ? ? ? ?openehr-technical-request at openehr.org
> >
> > You can reach the person managing the list at
> > ? ? ? ?openehr-technical-owner at openehr.org
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of openEHR-technical digest..."
> >
> >
> > Today's Topics:
> >
> > ? 1. AQL queries and one-many relationships 
> (John.Ryan-Brown at csiro.au)
> > ? 2. OpenEHR'ED (Derek Meyer)
> >
> >
> > 
> ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Tue, 24 Feb 2009 17:23:00 +1100
> > From: <John.Ryan-Brown at csiro.au>
> > Subject: AQL queries and one-many relationships
> > To: <openehr-technical at openehr.org>
> > Message-ID:
> > ? ? ? ?
> <8C3F2174B3FE2B408CB380513186BEC45752819AE6 at EXNSW-MBX03.nexus.
> csiro.au>
> >
> > Content-Type: text/plain; charset="us-ascii"
> >
> > Hello. I am currently investigating AQL and would like to 
> know how the following queries would be answered by a 
> conformant AQL query engine. I understand that the structure 
> of AQL query results are not standardized yet in the AQL 
> specifications, so if the spec cannot give a definitive 
> answer what would Ocean's AQL query engine implementation do?
> >
> > 1. ?SELECT
> > ? ? ?
> o/data[at0001]/events[at0031]/data[at0003]/items[at0004]/value
>  AS PosturalChangeSystolic,
> > ? ? ?
> o/data[at0001]/events[at1004]/data[at0003]/items[at0004]/value
>  AS ParadoxSystolic
> > ? ?FROM
> > ? ? ?EHR
> > ? ? ?CONTAINS COMPOSITION c [openEHR-EHR-COMPOSITION.encounter.v1]
> > ? ? ?CONTAINS OBSERVATION o 
> [openEHR-EHR-OBSERVATION.blood_pressure.v1]
> > ? ?WHERE
> > ? ? ?
> o/data[at0001]/events[at0031]/data[at0003]/items[at0004]/value
> /value >= 140 OR
> > ? ? ?
> o/data[at0001]/events[at1004]/data[at0003]/items[at0004]/value
> /value >= 140
> >
> > This query attempts to find all Systolic readings for 
> Paradox and Postural Change blood pressure events where the 
> Systolic reading for either is >= 140. As there is a 
> one-to-many relationship between a blood pressure observation 
> and both Paradox and Postural Change events, how should the 
> query be processed? If an observation has three Postural 
> Change events where Systolic >= 140, and four such Paradox 
> events, would the query return twelve rows (using my 
> relational database thinking). Or would one row be returned, 
> having two "lists" (with three and four members respectively) 
> of Systolic readings?
> >
> >
> > 2. ?SELECT o
> > ? ?FROM
> > ? ? ?EHR
> > ? ? ?CONTAINS COMPOSITION c [openEHR-EHR-COMPOSITION.encounter.v1]
> > ? ? ?CONTAINS OBSERVATION o 
> [openEHR-EHR-OBSERVATION.blood_pressure.v1]
> > ? ?WHERE
> > ? ? ?
> o/data[at0001]/events[at0031]/data[at0003]/items[at0004]/value
> /value >= 140 OR
> > ? ? ?
> o/data[at0001]/events[at1004]/data[at0003]/items[at0004]/value
> /value >= 140
> >
> > This query is the same as the previous one, except that it 
> returns the whole observation. It seems to me that all 
> readings should be returned, regardless of their systolic values?
> >
> >
> > 3. ?SELECT o
> > ? ?FROM
> > ? ? ?EHR
> > ? ? ?CONTAINS COMPOSITION c [openEHR-EHR-COMPOSITION.encounter.v1]
> > ? ? ?CONTAINS OBSERVATION o 
> [openEHR-EHR-OBSERVATION.blood_pressure.v1]
> > ? ?WHERE
> > ? ? ?
> o/data[at0001]/events[at0031]/data[at0003]/items[at0004]/value
> /value >= 140 AND
> > ? ? ?
> o/data[at0001]/events[at1004]/data[at0003]/items[at0004]/value
> /value >= 140
> >
> > This query is the same as the previous one, except that the 
> OR has been changed to an AND. It could be argued that only 
> the Paradox and Postural Change events with a Systolic 
> reading >= 140 should be returned, but it could also be 
> argued that all readings should be returned, as the whole 
> observation has been selected.
> >
> >
> > The problem I have is how to treat queries which have in 
> the WHERE clause a path expression that traverses through a 
> 1:n relationship. In trying to think through the semantics of 
> such queries, I come up with ambiguities. In a relational 
> query (i.e. SQL) the "equivalent" path expression would have 
> to be expressed as a join between tables in the FROM clause, 
> thus removing the ambiguities.
> >
> > Am I missing something or are my concerns relevant? If so, 
> how does the spec/Ocean implementation address them?
> >
> > Thanks,
> >
> > John Ryan-Brown
> > The Australian e-Health Research Centre
> > CSIRO ICT Centre
> > Brisbane
> >
> 
> _______________________________________________
> openEHR-technical mailing list
> openEHR-technical at openehr.org
> http://lists.chime.ucl.ac.uk/mailman/listinfo/openehr-technical
> 

Reply via email to