access on items in a cluster
Hello, I would like to typecheck AQL queries and have some problems doing that: The items in a CLUSTER are of type ITEM. If I access myCluster/items[at0001]/value, is there any possibility to type-check the validity of this path without having the concrete archetype definition at hand? Just using the reference model isn't enough for this task, because ITEMs do not have a value-field. How can (from an object oriented point of view) the values of the ITEMs be accessed without knowing if it is an ELEMENT ? Why is there a distiguishment between ELEMENT, ITEM and CLUSTER at all ? If the fields "items" and "value" were already attached to the class ITEM it would be easier. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: difference in expressability for archetype and template definitions
so, ADL2 is used to define both archetypes as well as templates ? -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
name of language to define OPTs ?
Hello, What is the language name in which templates (OPT and OPT2) are defined ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
difference in expressability for archetype and template definitions
Hello, In what extends does the specification language for defining archetypes and the language for defining templates differ ? Both take existing data models (RM types and archetypes) and constrain them as needed. It is often said, that archetypes are used to recombine RM types and templates are used to recombine archetypes. But the slot mechanism within the archetype definition does as well allow archetypes recombination within archetypes. And the constraining that is done within templates could as well be done using the constraining mechanisms of archetype design. Why are two specification languages needed ? And if one has elements that the other is missing, why can't those elements simply be included in the other, to reduce the amount of specification languages ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
information gain by "cardinality" ?
Hello, Constrained Container RM-Types can define a "cardinality" for their list/array fields and the contained types can define "occurrences" for themselves inside the array. The summed max-"occurrences" may never surpass the max-"cardinality and the summed min-"occurrences" may never be less than the min-"cardinality". The min-max-"occurrences" could perhaps even be calculated from the "occurrences". What information gain does the "cardinality" provide ? Or what is the usecase where a given "cardinality" is needed, because the information is not already given by the all "occurrences" ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: data element type from the RM
But if the class is contained within a template instance only within some technical background information and it is not part of the reference model, how can a query mechanism like AQL use this information during query execution ? How does an AQL query engine know that an archetype based on Composition is a Composition when this link is given in the RM-part of the serialized instance only within the archetype_id of the archetype_details ? From that it could deduced by using the background knowledge of the available archetype definitions that it is in fact a Composition. It would be easier if this would be directly included in the RM-part of a serialized Composition itself. Or is the class type something one would assume as part of the RM ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail:georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
data element type from the RM
Hello, Which is the field that stores the RM-model-type of data elements ? When I use the ocean instance generator the json contains a field called "@xsi:type", which contains this information. Where in the RM-model itself is this type-field defined ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
definition of custom fields in archetypes
Hallo, I have a question about the degree of freedom in defining archetypes: Archetypes are not composed but rather specified by constraining the base classes from the reference model. Hence no new/custom field members can be definied in the definition of a new archetype but only the field members already existing in the base classes have to be used. So there will never be a path like a/myField/myProperty/value but always just something like a/data/events/items/value The same applies for the definition of templates. Is this correct ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: API for adding data to an EHR
ah, cool, that was what I was looking for. Thank you Am 27.09.2019 um 13:52 schrieb Georg Fette: Hello, In which part of the openEHR API is the definition of how to add an instance of a template to an existing EHR ? Something like "add to EHR>" ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
API for adding data to an EHR
Hello, In which part of the openEHR API is the definition of how to add an instance of a template to an existing EHR ? Something like "add to " ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
schema of .oet xml templates
Hello, In the international CKM in the template "Demo with hide-on-form.oet" there is a tag named "activityDescription". I thought that only a fixed set of tags (e.g. "Content", "Item", "Rule") are allowed in template definitions. This tag looks like is a field name of the archetypes "openEHR-EHR-INSTRUCTION.imaging.v1". If arbitrary field names are allowed in template definitions, can there be at all a fixed template xml schema definition ? Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: usage of templates in AQL
Hi Ian, Sorry, I did not mean specifically imaging data. What I meant was that all our templates are based on the archetype openEHR-EHR-COMPOSITION.report.v1. My question therefore was, if the only possibility to retrieve all data for a specific template type is by querying with something you described: select a from EHR e contains COMPOSITION a where a/archetype_details/template_id/value ='My lovely template' Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: usage of templates in AQL
Ah, I understand. I just made the test to use the json_instance_generator of the CoboLabs openEHR Toolkit by creating an instance of one of my templates. The template name only appears in the archetype_details. The whole rest looks like a standard instance of the archetype the template is based on. When I have a system in which I have various templates for different kind of reports (e.g. echocardiography, anamnesis, etc.) and I would like to get all echocardiography data. Is it common practice to query using the archetype_details to identify the echocardiography reports, like you exemplified in your former answers ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: usage of templates in AQL
Thanks for the answers. Is a template apart from being a container which aggregates archetypes, a semi-definition or a derivation of an archetype ? The .oet template definitions always state a derivation from a an existing archetype (archetype_id="openEHR-EHR-COMPOSITION.report.v1"), and the type from which this archetype is inherited from (xsi:type="COMPOSITION"). So when I query with AQL for this archetype I should find those templates, is that correct ? Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
usage of templates in AQL
Hello, I have some question related to the coupling of AQL and templates: Imagine I want to write an AQL query containing a certain archetype and that archetype is used in multiple templates in the openEHR system. What do I need to know about the data model structures of the templates potentially containing this archetype ? When there are multiple templates that contain this archetypes, will they all be found by this query, no matter where the archetype is contained in their structure? How can I constrain my query so that I only get those of a specific template ? Do templates have to be specifically mentioned in the queries or are they handled as if they were archetypes as well ? How could I change my query so that (when I receive results from different template types) that I also get the surrounding information in which template my archetype has been found in ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openehr template specification questions
Hi Thomas, Thanks for the link. The links on the page https://specifications.openehr.org/releases/ITS-XML/latest/components/AM/OET/ are all dead. Some of them can be repaired by removing the OET from the url. Greetings Georg Am 16.09.2019 um 13:06 schrieb Thomas Beale: Georg, if you go to the ITS page <https://specifications.openehr.org/releases/ITS/latest/index>, you can see links to most concrete formats you need. The XML format for AOM2 and OPT2 is there as well, which is the format for ADL2 templates, since the latter are just a kind of archetype in ADL2. THese latter XML formats have not yet been used much, but the ADL workbench generates them (but doesn't read them). The ADL-designer and/or LinkEHR will read the XML formats for ADL 1.4 and .oet, but probably not (yet) ADL2-XML. - thomas On 16/09/2019 11:58, Georg Fette wrote: Hello, I am currently trying to learn the openEHR template format specification. The first thing I did was looking at the specification page (https://specifications.openehr.org/), to see what template formats exist. On this page OPT1.4, OPT2 and AOM2 are listed as description laguages that somehow are related to templates. .oet is not listed on this page and I did not find a a formal definition of the xml-specification for .oet. Is there somewhere a formal .oet specification ? I read the pages linked to OPT1.4, OPT2 and AOM2 linked on the specification page. The next thing I did was that I downloaded all templates from https://www.openehr.org/ckm/, https://arketyper.no/ckm/ and https://ckm.highmed.org/ckm/ using the bulk exports and tried to infer the specification from what I got from those three CKMs. Are the names of the tags simply the names of the archetype fields from the archetypes, enriched with and ? The next thing I looked at were the .opt files. The CKMs can export those individually using the Ocean OPT components. Which format do those files correpont to, OPT1.4 or OPT2 ? On the specification page https://specifications.openehr.org/releases/AM/latest/OPT2.html I did not find a specification for the XML-Format of .opts. Is the .optx specification somewhere available ? Is it possible with one of the available workbenches (perhaps even using a CKM) to transform the .opt-XML file into an .adl file ? Greetings Georg -- Thomas Beale Principal, Ars Semantica <http://www.arssemantica.com> Consultant, ABD Project, Intermountain Healthcare <https://intermountainhealthcare.org/> Management Board, Specifications Program Lead, openEHR Foundation <http://www.openehr.org> Health IT blog <http://wolandscat.net/> | Culture blog <http://wolandsothercat.net/> | The Objective Stance <https://theobjectivestance.net/> -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
openehr template specification questions
Hello, I am currently trying to learn the openEHR template format specification. The first thing I did was looking at the specification page (https://specifications.openehr.org/), to see what template formats exist. On this page OPT1.4, OPT2 and AOM2 are listed as description laguages that somehow are related to templates. .oet is not listed on this page and I did not find a a formal definition of the xml-specification for .oet. Is there somewhere a formal .oet specification ? I read the pages linked to OPT1.4, OPT2 and AOM2 linked on the specification page. The next thing I did was that I downloaded all templates from https://www.openehr.org/ckm/, https://arketyper.no/ckm/ and https://ckm.highmed.org/ckm/ using the bulk exports and tried to infer the specification from what I got from those three CKMs. Are the names of the tags simply the names of the archetype fields from the archetypes, enriched with and ? The next thing I looked at were the .opt files. The CKMs can export those individually using the Ocean OPT components. Which format do those files correpont to, OPT1.4 or OPT2 ? On the specification page https://specifications.openehr.org/releases/AM/latest/OPT2.html I did not find a specification for the XML-Format of .opts. Is the .optx specification somewhere available ? Is it possible with one of the available workbenches (perhaps even using a CKM) to transform the .opt-XML file into an .adl file ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
templates in .oet and .opt
Hi, I am not yet very familiar with templates and I only recently started digging into the documentation. One thing I encountered is the distiguishment between template (.oet) and operational templates (.opt). I played a bit using the oceans-toolbox and transformed some .oets into .opts. Although the oceans-toolbox seems not capable to reimport the exported .opts, it looks like both representations can be transformed into the other without loss of information. E.g. in the .opt some parts of the archetypes can be set to 0..0, but they still exist if needed to recreate the constrain that was used to model this 0..0 (which perhaps formerly was a 0..1). So my questions are: - Are the two representation really bidirectionally transformable into each other ? - For which tasks is which representations mostly used for ? Is it correct to say that the former is more appropriate for modeling purposes and the latter more for technical processing. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
usage of references to archetype instances in templates ?
Hi, Does openEHR contain the paradigm to reference instances of archetypes in template instances ? When I want to use an archetype instance in two different templates I have two possibilities, 1. to duplicate the data and store it in the serialized objects of both template instances or 2. to store the archetype instance once and reference it from within the template instances. The 2nd option would have the advantage that I could change the data of the archetype instance and both template instances immediately would point to correct data. Unfortunately the templates can constrain the archetype differently any change on an archetype instance would have to trigger a check on all references of this instance to ensure that all constaints on the used archetype are still met. This trigger mechanism doing those checks could be a bit complicated. If such a reference mechanism is used in openEHR, where in the documentation is it specified ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: automatic demotion of lists in AQL ?
Hi Seref, Ok, thank you for the answer. From that I and the other answers I would summarize that "implicit iteration over lists in order to further process the elements" is a paradigm that does actually exist in AQL. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: automatic demotion of lists in AQL ?
Hello, In order to better understand the semantics of AQL I try to rephrase the problem I have: Imagine an archetype "openEHR-EHR-CLUSTER.example.v1" that allows the multiple existence of a specific contained field: definition CLUSTER[at] matches { items cardinality matches {0..*; unordered} matches { ELEMENT[at0001] occurrences matches {0..*} matches { value matches { DV_TEXT matches {*} } } } } Is it allowed to constrain this archetype in the WHERE part by accessing the field within a path? : SELECT e FROM EHR e CONSTAINS CLUSTER a[openEHR-EHR-CLUSTER.example.v1] WHERE a/items[at0001]/value = 'test' The problem I have with this query is that the path "a/items[at0001]" is a list, so it perhaps cannot be extended with "value", because a list does not have a field "value" but only the members of this list have this field. An alternative to the query above would be to resolve the list in the FROM part by writing something like this: SELECT e FROM EHR e CONSTAINS CLUSTER a[openEHR-EHR-CLUSTER.example.v1] CONTAINS DV_TEXT b WHERE b/value = 'test' This would work in the above example, but would create further problems if there are further elements in parallel to ELEMENT[at0001] that as well contain DV_TEXTs and which would be matched as well by the alternative query. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
AQL access of fields of potential subclasses or derived archetypes
Hello, I have a question the is a bit related to the discussion about the constraining of the ELEMENT type in the laboratory_analytes. The current specification defines the field "ehr_status" of the class EHR with the type OBJECT_REF. In the AQL specification there is an example (chapter 3.7.2.3. NOT) that accesses this field with the assumption that the field is of type EHR_STATUS. I have written a type checker for AQL queries, so I am now stumbling across queries that access fields of potential subclasses or derived archetypes. Does/should the specification generally allow such a thing ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: automatic demotion of lists in AQL ?
Hi Thomas, I do not want to use the path element "items[at0001]" multiple times. What I mean is that in the query SELECT a/items[at0001]/value FROM EHR e CONTAINS CLUSTER a[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] the path "a/items[at0001]" denotes a list of ELEMENT (min: 0, max: *). Thus the access to the field "value" of this list seems odd. But from the specification it seems that if I want to receive all values of all values of all elements this query is the correct query to make what I want. To access all path leafs of all elements of such a list is therefore implicitely done. Greetings Georg -- --------- Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: constraining of laboratory_test_analyte Analyte result
Hi Thomas, It depends on what you mean with "specialise". I do not wish to create a new archetype but I rather would like to query existing instances of the openEHR-EHR-CLUSTER.laboratory_test_analyte.v1 archetype. From those instances I would like to query only this with specific attributes. One constraint I am able to define is to constrain the analyte name: SELECT e FROM EHR e CONTAINS CLUSTER a[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] WHERE a/items[at0024]/value/value = 'Calcium' But how can I manage to as well constrain the value ? The path openEHR-EHR-CLUSTER.laboratory_test_analyte.v1/items[at0001] is of the type ELEMENT, which has a DATA_VALUE for its field "value". The concrete instances of the analytes do have decendents of the DATA_VALUE type in the place for ELEMENT[at0001]/value, e.g. DV_QUANTITY. Is it possible to use paths to those concrete value types in the WHERE-paths, such like: SELECT e FROM EHR e CONTAINS CLUSTER a[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] WHERE a/items[at0024]/value/value = 'Calcium' AND a/items[at0001]/value/magnitude > 100 From a type checking point of view, this is not allowed, because the data type at the path a/items[at0001]/value (which is DATA_VALUE) does not contain a field "magnitude". To make this work I would have to bind the value to the concrete type, with something like: SELECT e FROM EHR e CONTAINS CLUSTER a[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] CONTAINS DV_QUANTITY b WHERE a/items[at0024]/value/value = 'Calcium' AND a/items[at0001]/value = b and b/magnitude > 100 but I don't think this is allowed in AQL. I am not yet that fluent in AQL, so I could need a little help in this. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: AQL questions
Ah, thanks for the clarifications. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
constraining of laboratory_test_analyte Analyte result
Hello, How do I constrain the Analyte result of a laboratory_test_analyte.v1 ? The Analyte result are defined as an ELEMENT that is only constrained by a node predicate (i.e. ELEMENT[at0001]). Therefore the results cannot be bound with a specialized type and an alias within the FROM part, as in the FROM part only archetypeID-predicates are allowed and no node predicates. As the result is defined with the abstract ELEMENT type, which has an abstract DATA_VALUE as its content, no paths can be defined that constrain specific aspects of subclasses of DATA_VALUE that are actually stored in the ELEMENT[at0001] field of the test_analyte. How can this problem be resolved ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
AQL query for blood pressure from the AQL documentation
Hello, I have a problem with the interpretation of an AQL query from the AQL documentation. In section 6.3 the path to the value of the systolic blood pressure is /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value/value The first part until /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value denotes a DV_QUANTITY. Where is the additional field 'value' of the type DV_QUANTITY defined ? The class itself defines the fields 'magnitude', 'precision', 'units', 'normal_range' and 'other_reference_ranges'. Its parent class DV_AMOUNT defines 'accurany_is_percent' and 'accuracy'. The next parent DV_QUANTIFIED defines 'magnitude_status' and again 'accuracy'. The next parent DV_ORDERED defines 'normal_status', 'normal_range' and again 'other_reference_ranges'. The two parents of DV_ORDERED are DATA_VALUE and Ordered, both define no fields. Has this field access to be 'magnitude' instead of 'value' or am I missing something ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
automatic demotion of lists in AQL ?
Hello, Is it allowed to use an element that is allowed to appear multiple times within a path ? For example in the query SELECT a/items[at0001]/value FROM EHR e CONTAINS CLUSTER a[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] the field items[at0001] may appear 0..* times. Thus the access to the value field is not properly defined from a type checking point of view. Does the AQL specification allow such constructs and how is this situation interpreted ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: AQL questions
Hi Bjørn, Thank you for your answers. They make me assume that the CONTAINS-operator is recursive because in your second query you ommited the part with "CONTAINS OBSERVATION o[openEHR-EHR-OBSERVATION.laboratory_test.v1]". Is this assumption correct ? This would make writing AQL a lot simpler. Another assumption I have is that the predicate namespaces always relate to the aliased archetype the path they are used within starts with. In your first query you use at0001 and at0002 each two times but they seem to have different meanings. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
AQL questions
Hello, I have some problems concerning the formulation of an AQL query. I would like to check a laboratory analyte within a laboratory test. The analyte should have "Calcium" as analyte name and I would like to receive all EHRs that contain the analyte as the query result. The SELECT part seems easy, as I just want the EHRs, so this looks like this: SELECT e A problem I now have is about the nesting of the Archetypes. As the test is an OBSERVATION and an EHR contains only COMPOSITIONs, I wonder if I have to include a COMPOSITION in order to reach the tests. This would lead to a FROM part looking like this: FROM EHR e CONTAINS COMPOSITION CONTAINS OBSERVATION b[openEHR-EHR-OBSERVATION.laboratory_test_result.v1] The next problem I have is about the definition of the containment of the analyte in the FROM part or better in the WHERE part. The FROM part would require me to define the actual nesting structure of the test-OBSERVATION up to the analyte-CLUSTER. This would look like this: FROM EHR e CONTAINS COMPOSITION CONTAINS OBSERVATION b[openEHR-EHR-OBSERVATION.laboratory_test_result.v1] CONTAINS HISTORY CONTAINS EVENT CONTAINS ITEM_TREE CONTAINS CLUSTER c[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] This looks a bit bloated, so I think this should rather be moved to the WHERE part, which would look like this: FROM EHR e CONTAINS COMPOSITION CONTAINS OBSERVATION b[openEHR-EHR-OBSERVATION.laboratory_test_result.v1] WHERE b/data[at0001]/events[at0002]/data[at0003]/items[at0097]/items[at0024].value = 'Calcium' In this WHERE path I am wondering about the necessity of the path part predicates (i.e. the [at...] parts). Are these predicates always necessary for every path part ? Or are they only necessary when the path part object would be ambiguous without the predicate (e.g. in the items of CLUSTERs or ITEM_LISTs) ? Furthermore I wonder about the namespace from which the predicates are taken from. For the first part of the WHERE until the archetype slot is reached (i.e. b/data[at0001]/events[at0002]/data[at0003]/items[at0097]) the predicates are from the laboratory_test_result archetype. For the rest of the path (i.e. /items[at0024].value) the predicates are taken from the laboratory_test_analyte archetype. This switching of namespaces seems wrong, so I think I still have some misunderstanding of AQL concerning the predicates. How would the correct query/queries look like ? Are there multiple valid alternatives to express my query using combinations of the approaches scetched above ? Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: serialization syntax of openEHR instance data
Hello, Thank you all. The .xsds are already very useful. And the Toolkit also looks beneficial for what I want to do. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
serialization syntax of openEHR instance data
Hello, Is there a documentation of the syntax how openEHR EHR data is serialized ? I would be interested in a concrete example of an EHR-API-GET-call and the returned String in XML or JSON which can be used as transfer medium between applications or as a storage format. It would be beneficial if the example EHR would contain some commonly used archetypes and some usual demographics data. I have taken a look at https://openehr.github.io/specifications-ITS-REST/ehr.html and at the "EHR Extract Information Model" but I haven't found something that satified me in this matter. Greeting Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR on FHIR and vice versa
Hi Diego, Thank you. That profile worked. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR on FHIR and vice versa
Hi Diego, I just tried to import with the LinkEHR studio via the Import->FHIR option this StructureDefinition : {"resourceType":"StructureDefinition","id":"Test","name":"Test","type":"Test","baseDefinition":"http://hl7.org/fhir/StructureDefinition/DomainResource","snapshot":{"element":[{"id":"Test","path":"Test","min":0,"max":"*"}]}} A dialog appeared, in which I could configure some import details. But after that nothing happed. Is there an example available, which shows what the FHIR import in LinkEHR is capable of ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
openEHR on FHIR and vice versa
Hello, I have just read the paper "Combining Archetypes with Fast Health Interoperability Resources in Future-proof Health Information Systems", in which the representation of openEHR archetypes as FHIR profiles is presented. As I am also trying to use this approach and I wonder if there are working and publicly available applications (possibly emerged from the above mentioned research) that use that approach ? I am especially interested in: - transforming openEHR archetypes into FHIR profiles (StructureDefinitions) and storing them in a FHIR server. - transforming FHIR profiles into openEHR archetypes and storing them in an openEHR server. - transforming openEHR archetype instances into FHIR resources (Bundles) and storing them in a FHIR server. - transforming FHIR resources into openEHR instances and storing them in an openEHR server. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
use_node semantics
Hello, I am unsure about the semantics of the use_node keyword. Can the archetype branch that is attached at the place where use_node is mentioned be seen like when a preprocessor would paste the part of the referenced branch into the place where use_node is used ? In practice this could create problems when a recursive insertion of the referenced branch is inserted, but from a logical point of view is that interpretation correct ? Is an archetype using use_node-branches equivalent to an archetypes in which the referenced branch have been explicitely pasted into the use_node places ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Reference Model as Archetypes ?
Hello, In the LinkEHR files the archetypes for the "EHR Infomation Model" are contained (ACTION, CLUSTER, etc.). Are there also somewhere archetypes that describe the "Data Types Information Model" (e.g. DV_QUANTITY, DV_MEDIA, etc.). Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Reference Model as Archetypes ?
Hi Diego, In the Archetypes contained in the LinkEHR files I am missing the subclasses that are subclassed by the root archetypes. In ACTION for example the subclass INSTRUCTION_DETAILS is used. This is used in the ACTION.adl file and it is parseable but I wonder if there is an INSTRUCTION_DETAILS.adl file somewhere, which possibly defines something that is not yet defined in the ACTION.adl file. Or can be assumed that the subclasses wherever they are mentioned are fully desribed at the places where they are introduced ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Reference Model as Archetypes ?
Hi Diego, Yes, if you have a working parser for those archetypes that would be useful. The modified grammer would also be useful. What are the copyright constraints on your parser and your grammmer file ? I managed to get one of the archetypes parsed by lowercasing the language codes and removing all elements that include a recursive use_node statement. Is the inability to parse use_nodes that reference a node upwards in the same branch of the element a bug in version 1.0.71 ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Reference Model as Archetypes ?
Hi Diego, I just tried to parse the .adl files from LinkEHR and got several Exceptions. I currently use the adl-parser from org.openehr.java-libs_v_1.0.71. Which parser can I use to parse those archetypes ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Reference Model as Archetypes ?
Hi Diego, Thank you, that is exactly what I was looking for. In the DEMOGRAPHICS and the EHR package there are 6 archetypes which have the same name but differ only in their full path name: CLUSTER, ELEMENT, ITEM_LIST, ITEM_SINGLE, ITEM_TABLE and ITEM_TREE. Why are they two versions of those archetypes with almost identical content ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Reference Model as Archetypes ?
Hello, Is there somewere a machine readable definition available which describes the content of the openEHR Reference Model as Archetypes ? The Reference Model classes should be expressable as Archetypes, shouldn't they ? At least concerning their logical data model. The methods they also possibly provide can hardly be expressed using Archetypes. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: ADL specification question
Hi Diego, The items inside the CLUSTER look like this: CLUSTER[at0001] matches { items cardinality matches {2..*; ordered} matches { ELEMENT[at0002] matches { value matches { DV_COUNT matches {*} } } ELEMENT[at0003] matches { value matches { DV_TEXT matches {*} } } } } It could be that I not yet fully understand ADL, therefore I would need to verify/falsify some assumptions I make: - Both elements (at0002, at0003) have an implicit cardinality of "1..1" ? - The keyword "ordered" just indicates that the items inside an instance of the cluster at0001 have to maintain the order in which they were defined. The order does not affect an enforced order of the types of the elements inside the cluster ? - What is true?: * The cluster at0001 may include the elements at0002 and at0003 in any order an unlimited amounts of them as long as the cluster includes at least 2 of them. The specification inside of at0001 just gives the set of possible elements that may appear as items of at0001. E.g. "at0003, at0003, at0002, at0003, ..." * The cluster at0001 has to include at least 2 elements in the order given in the at0001 definition and the order may be repeat an unlimited amount of times, e.g. "at0002, at0003, at0002, at0003, ..." Greetings Georg Hello Georg, What (and how many) objects you have inside the items attribute? Think the cardinality as the "vector" capacity, and inside you can put them in order (depending on their occurrences, they may even not appear at all) Regards El jue., 29 nov. 2018 10:31, Georg Fette <http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org>> >escribió: Am 29.11.2018 um 10:30 schrieb Georg Fette: Hello, I have an archetype with a complex object derived of CLUSTER with "items cardinality matches {2..*; ordered}" and those two items are also defined inside the complex object. I understand the semantics of this definition that both items always have to appear together inside the cluster but the package of those two items may appear any number of times. Is it allowed for instances of this archetype to have an uneven number of items > 2 inside this cluster, because that would still suffice the restriction of having 2..* children. Or do the instances always have to have both elements as a package that are defined as items in this cluster. As I am not the author of the archetype I do not completely understand how the definition has to be interpreted. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
ADL specification question
Hello, I have an archetype with a complex object derived of CLUSTER with "items cardinality matches {2..*; ordered}" and those two items are also defined inside the complex object. I understand the semantics of this definition that both items always have to appear together inside the cluster but the package of those two items may appear any number of times. Is it allowed for instances of this archetype to have an uneven number of items > 2 inside this cluster, because that would still suffice the restriction of having 2..* children. Or do the instances always have to have both elements as a package that are defined as items in this cluster. As I am not the author of the archetype I do not completely understand how the definition has to be interpreted. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Parsing of Archetypes/Templates
Hi Peter, The Archie-Toolkit looks promising. I tried to parse one of the archetypes from the CKM (BloodPressure) and tried to parse the exported ADL. However, I got a Exception when trying this because the exported ADL does not seem to be parseable: line 1:24 mismatched input '1.4' expecting VERSION_ID line 2:1 mismatched input 'openEHR-EHR-OBSERVATION.blood_pressure.v1' expecting ARCHETYPE_HRID With the exported XML and the try to unmarshal the XML with the JAXBUtil I also did not succeed. Is there somewhere a testcase were I can see a working example of a parsed ADL String ? Greetings Georg Hello George, If you are looking for something to handle ADL 2 archetypes - the most recent version -, have a look at https://github.com/opener/archie . It is a java library that can parse archetypes, flatten and validate them, create operational templates and more. Are you using the openehr reference model, or something else like fihr? Although Archie can parse and serialize archetypes in XML, archetypes are usually stored as ADL. This is a custom more readable format. Of course you can then easily convert it to XML or Json to work with them in other tools where you do not have an ADL parser ready. Note that for ADL 2 as far as I know there is no official XSD released yet, so it is possible you run into compatibility problems with XML. For ADL 1.4 this is not a problem. Regards, Pieter Bos Am 12.11.2018 um 09:18 schrieb Georg Fette: Hello, For a project we want to create a generic mechanism to transform archetypes into FHIR Logical Models, so we can store, retrieve and query archetype instance with FHIR tools (CQL, FHIR-REST-API-query). At the moment we just want to read/write archetypes and not archetype instances. We are looking for existing components to parse and process archetypes. I have some questions I encountered related to these issues: - I have found several projects that store openEHR-data (archetypes as well as archetype instances) into different data substrates (Neo4J, ARM (archetype relational mapping), EtherCIS). Although I have not yet looked at the code of these projects I assume that they take an archetype XML-file, parse it and thus create a runtime object of the archetype. That runtime object can then be given as a parameter to a persistence layer (e.g. JOOQ, Hibernate, etc.). In order to reuse something from already existing projects I am looking for a parser that creates a runtime object from an archetype-XML-String, so we can write our own components that transform it into a FHIR runtime object. The component we are looking for should preferably be written in Java, as this is our language of choice in our project. - I am not ye sure if we are looking for a method to transform archetypes, templates or operational templates into FHIR related structures, as I am not yet that familiar with which data structure is preferably used for which kind of task. Therefore, component that, instead of archetypes, parse templates or operational templates would be appreciated as well. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Parsing of Archetypes/Templates
Hello, For a project we want to create a generic mechanism to transform archetypes into FHIR Logical Models, so we can store, retrieve and query archetype instance with FHIR tools (CQL, FHIR-REST-API-query). At the moment we just want to read/write archetypes and not archetype instances. We are looking for existing components to parse and process archetypes. I have some questions I encountered related to these issues: - I have found several projects that store openEHR-data (archetypes as well as archetype instances) into different data substrates (Neo4J, ARM (archetype relational mapping), EtherCIS). Although I have not yet looked at the code of these projects I assume that they take an archetype XML-file, parse it and thus create a runtime object of the archetype. That runtime object can then be given as a parameter to a persistence layer (e.g. JOOQ, Hibernate, etc.). In order to reuse something from already existing projects I am looking for a parser that creates a runtime object from an archetype-XML-String, so we can write our own components that transform it into a FHIR runtime object. The component we are looking for should preferably be written in Java, as this is our language of choice in our project. - I am not ye sure if we are looking for a method to transform archetypes, templates or operational templates into FHIR related structures, as I am not yet that familiar with which data structure is preferably used for which kind of task. Therefore, component that, instead of archetypes, parse templates or operational templates would be appreciated as well. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
SHRINE for openEHR ?
Hello, Is there an equivalent to i2b2's SHRINE in the openEHR world ? SHRINE is a system that distributed an i2b2 query to a network of i2b2 installations and aggregates the returned results. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: Identifying archetype nodes in AQL via terminology code
Ah, okay. Thank you. Am 06.09.2018 um 10:33 schrieb Birger Haarbrandt: Hi Georg, currently, this is not possible directly using AQL. However, technically it is possible to make a look-up within all archetypes to automatically retrieve the elements (and their paths) that have a matching terminology-binding (for example to the snomed code for gender). This path could then be used within an AQL query which can use the code for "male". I actually was thinking about building such a tool within HiGHmed make analytics quers more convenient, though we are still searching for a developer. Hope this answers your question, Birger -- *Birger Haarbrandt, M. Sc. Peter L. Reichertz Institut for Medical Informatics (PLRI) Technical University Braunschweig and Hannover Medical School Software Architect HiGHmed Project * Tel: +49 176 640 94 640, Fax: +49 531/391-9502 birger.haarbra...@plri.de www.plri.de Am 06.09.2018 um 10:21 schrieb Georg Fette: Hello, In AQL it is possible to constrain the value of a node to one of the codes that are allowed for that value (as specified in the respective archetype). To find patients with gender (snomed-ct:248153007) male (snomed-ct:248153007) I could write something like this: SELECT e FROMEHR e CONTAINSDEMOGRAPHICS d WHERE d.items[at0017].value = 'snomed-ct:248153007' Is it possible to identify the node of an archetype instead of its path parts (e.g. d.gender or d.items[at0017]) also with a terminology code, so the query would rather look like something like that: SELECT e FROMEHR e CONTAINSDEMOGRAPHICS d WHERE d.items['snomed-ct:263495000'].value = 'snomed-ct:248153007' I am not very experienced with AQL so the queries are probably already syntactically wrong. Greetings Georg -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail:georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org -- ----- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Identifying archetype nodes in AQL via terminology code
Hello, In AQL it is possible to constrain the value of a node to one of the codes that are allowed for that value (as specified in the respective archetype). To find patients with gender (snomed-ct:248153007) male (snomed-ct:248153007) I could write something like this: SELECT e FROMEHR e CONTAINSDEMOGRAPHICS d WHERE d.items[at0017].value = 'snomed-ct:248153007' Is it possible to identify the node of an archetype instead of its path parts (e.g. d.gender or d.items[at0017]) also with a terminology code, so the query would rather look like something like that: SELECT e FROMEHR e CONTAINSDEMOGRAPHICS d WHERE d.items['snomed-ct:263495000'].value = 'snomed-ct:248153007' I am not very experienced with AQL so the queries are probably already syntactically wrong. Greetings Georg -- --------- Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
post-coordination in openEHR
Hello, Using terminology bindings it is posssible to bind terminology IDs of specific terminologies to archetypes as well as to their members. In the openEHR documentation it is written that there is no concept of post-coordination outside the terminology environment. What does that exactly mean ? When I have a post-coordinated expression, how do I use it within openEHR ? The linkage of an openEHR system to a potential terminology server is something that I do not yet unterstand very well. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Export via CDISC ODM or FHIR
Hello, Are there already ideas about a future export API of AQL queries that support an export in CDISC ODM or FHIR ? It would be nice to have an export format that could be immediately consumed by other systems supporting the same specifications. I am not yet that much into either topic (ODM as well as FHIR), therefore I do not yet see if the desire itself makes not sense or if there are serious problems that would hinder such exports. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
repository of AQL queries ?
Hallo, Is there somewhere a repository of archived AQL queries ? I could imagine that to be a bit problematic because the queries are always bound to their corresponding repository of archetypes. An AQL-query-repository would be great as a source for examples when trying to learn AQL. It would also be a good resource for experiments and testcases, because real life queries often include aspects that other developers would never have thought of. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR REST APIs - Release 0.9.0 / invitation for comments
Hi Seref, Thank you very much for your clarifications. So, the SELECT in AQL works like a JOIN in SQL (or like the behavior of Xquery and Sparql with which I am not that much familar yet). This is something that should be better emphasized in the documentation. As you say that many people ask for a solution that creates concatenated facts in the same cell, I would assume that some people not only wish for this behavior but even assume it is indeed the actual behavior. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR REST APIs - Release 0.9.0 / invitation for comments
Hi Seref, Quite some discussion you already had on this topic last year. The examples are a bit hard to grasp because of their complexity in size. Although they are not really that extremely complex but perhaps the problems should be discussed with the least complex examples as possible. I would think it more understandable if it were explicitely described in the API documentation that all result data is generally encoded in JSON (with a link/reference to the corresponding reference model page). But that wouldn't be sufficient. The description of the encoding concerns not only how a single element is encoded but even more how collections are encoded. Those collections are not ITEM_LISTs or any other part of the reference model of openEHR because they are formed at the moment the query is executed. When in the example from the API the "uid"-member of "c" is assumed to be of the type ITEM_LIST (or any other collection type) and the member "value" of "uid" were a primitive, the requested column "c/uid/value" represents a collections although the "value"s themselves are primitves. This can't be handled with a generic object-serialization mechanism. The only object containing all desired "value"s is the parent "c" object. This could be generically serialized, but it isn't requested in the query. So there has to be an iteration over all "value"s,which can themselves be serialized, but all their resulting JSON-Strings would have to be concatenated (externally from the serializing mechanisms) and written to the same result cell. Or, when no concatenation is desired, some solution with something like a Cartesian product would be needed. How do the commercial implementations of AQL like the software from Marand handle this stuff ? Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B009 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR REST APIs - Release 0.9.0 / invitation for comments
Hi Thomas, I have taken a look at the abstract service model interfaces and have compared them to the interfaces we have developed for our own data warhouse architecture: * IQueryService: In our experience we noticed that queries can take quite some time to finish, so a synchonized/blocking method call did not work well as an interface. Queries can fail because of lack of memory or lack of disc space when the result sets get too large. An asynchronous query execution worked better. Additionally to the execute methods which return a running_query_ID there have to be methods that check the status of running queries. The result sets are as well accessed via the running_query_ID. A running query should be cancelable. When possible, a running query should provide the expected amount of time it still needs to finish (in total% or in seconds). * Definition package It is sometimes useful for query designers to be able so work with and save unfinished or syntactically incorrect queries. The definition interface should provide methods that check the syntactic correctness of methods and provide comments (String-based) on the state of a given query. The provenance of queries that are used for medical research should be as strictly logged as all code, specifications and data that is involved in the provision of clinical data. Therefore the query descriptor calls needs members for versions and who created the query. To support the management of queries they should be able to be stored in a kind of file structure (treelike). A query should therefore belong to a folder to which it is associated. * Admin package An important part of querying is logging of executed queries. There should be an Interface for the history of all executed queries, including AQL code, user, execution time, execution duration, amount of results. * I_EHR service interface Our data warehouse system is based on an EAV schema. Therefore it was easy to provide methods that return all instances of a certain attribute. With this kind of access it is easier to debug or create summary reports instead of using the query interfaces for doing the same job. I have to admid that I have no idea how to provide this kind of access in an archetype based model. The sole access at the moment is via the ehr_id. More methods that provided orthogonal access possibilities based on archetype IDs would be nice. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
Re: openEHR REST APIs - Release 0.9.0 / invitation for comments
Hello, I have some questions on the explicit definition on how the result rows are returned in the query API: 1. In the example at https://www.openehr.org/releases/ITS/Release-0.9.0/docs/query.html#header-resultset-example there is one result row with one fact for each of the columns that were requested. Three of the columns contain primitves (i.e. Strings) but one column contains a JSON representation of an object. It is difficult to grasp from the example why some facts are returned as primitves and some as serialized JSON objects. It would be beneficial to see the corresponding archetype definitions in order to understand how different columns containing different parts of the archetypes are encoded. 2. When one of the columns contains a list of items in each cell (because the denoted data type is an ITEM_LIST), will the content of that cell be JSON serialized ? When a user requests all laboratory values (e.g. calcium measurements) for a specific patient, then a table would be returned. But instead of receiving the individual measurements in seperate columns so the result could be immediately processed in tools like Excel or SPSS, the data would have to be again crunched by another tool that makes a real table out of the table-JSON-compound. 2b. What happens when multiple columns can contain multiple values as their values. When every column containing multiple values (ITEM_LISTs) will be encoded with JSON and written to the same cell this will not be an issue. But when the multiple values are instead distributed over multiple cells (or rows) some mechanism has to be defined how to cope with the combination of two columns containing multiple values for one record. In SQL-JOINs this is handled with the Cartesian product of the sets of facts. But this bears the risk of combinatorial explosions when defining queries with too many columns containing too many values for each record. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org
AQL Parser
Hello, What is the best (comfortable, easiest to use, most often used, most interoperable, etc.) implementation of an AQL parser currently available ? After some googleling I found a Git repository of JacSoyYo. Alternatively I could cut the parser from the EtherCIS-Server. Currently I am only interested in a runtime object model of AQL queries so I do not need an interpreter engine. Greetings Georg -- - Dipl.-Inf. Georg Fette Raum: B001 Universität WürzburgTel.: +49-(0)931-31-85516 Am Hubland Fax.: +49-(0)931-31-86732 97074 Würzburg mail: georg.fe...@uni-wuerzburg.de - ___ openEHR-technical mailing list openEHR-technical@lists.openehr.org http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org