Hi David, I already said this but I want to be clear: there are not fixed 
"steps" for implementing openEHR, it depends on requirements, technology and 
the methodology you use.
You should advice your boss, this is not something you can learn and implement 
in a month.

I think I also mentioned this before: for your first prototype you only need an 
archetype parser, i.e. adl_parser and ADL Workbench to extract paths.
Please read this email carefully, is long but it has info you can use to start 
doing something right away. I can clarify this if you have questions, but I'll 
not repeat this in future emails or tell you to read previous messages. Don't 
take me wrong, but at an early stage you have to go through these ideas a 
couple of times before asking further questions. I know you have pressure on 
your side, but this is not an API you can read the reference, ask a couple of 
questions, and start coding right away...

About mappings, those are system dependent and I can't give you those. You just 
need to create something like this:
Mapping between a field on screen and a node on an archetype:screen_a.field_a 
maps_to archetype_id.node_path
Mapping between a column on a database and a node on an 
archetype:table_a.column_a maps_to archetype_id.node_path

Then, when you receive a data from screen_a on field_a, you know which 
archetype to load, and which node to get. You can use that node to validate 
data using constraints on the archetype. This is straight forward. I've been 
doing automatic data validation using archetypes for the last 4 years on 
EHRGen.Then you can use the database binding to know where to put the data, so 
data store can be also automated using bindings. This means you don't have to 
write routines for every piece of data that you want to store: you just write 
one generic routine to do that, and use the bindings. This is how EHRServer 
works.
This is key: the app logic might not know how data is persisted and where, is a 
generic algorithm that does all the magic, giving you more time to do 
interesting stuff instead of inserting data into a database. Also, if you have 
a client app, the client doesn't know where and how the data is persisted, you 
just send the data and when you want to query, the data is magically there 
without making your client apps save ids or references to the data persisted in 
another component. These are good practices applied: SoC, low coupling and high 
cohesion, etc.
Another use of the UI-archetype binding is that you can generate the UI using 
archetypes :)
In the openEHR course in spanish, I teach two methodologies of creating openEHR 
systems, one is using bindings, and the other is using metadata to autogenerate 
software elements (screens, database artifacts, maybe code generation for logic 
(data validation, data transformation, persistence, ...), etc). For the last, 
archetypes are the kernel metadata, but you also need UI definitions, 
terminologies, process definitions, etc.
About saving and querying, I already mentioned that on previous messages: 
"Create tables, saves and retrieves the.same way you do with any other system. 
This is not black magic, is just data :)".
There are strong opinions about this and some people doesn't understand this 
yet, but this comment is key: is not mandatory to implement the complete 
information model at the persistence layer, at least not a 1-to-1 mapping. Your 
persistent model can be different to the information model, but there will be 
semantic links between them that makes both models compatible / semantically 
equivalent. That's why you need some kind of mapping/binding if those models 
are not mapped 1-to-1 (persistence & openEHR IM).
What is mandatory is that your system (not your persistence layer alone) can 
receive and retrieve openEHR data using services.
If one developer chooses to implement the openEHR IM at the persistence layer, 
is just a design decision. I've made this decision in the past, and have a 
working implementation doing that (EHRGen 
https://code.google.com/p/open-ehr-gen-framework). Experience told me is a mess 
to implement the complete information model at the persistence layer using a 
relational model, but it has big advantages for data processing, e.g. executing 
path based queries is easy because queries are executed against the openEHR IM 
(and this can be done regardless of the DBMS you use, relational, document, 
key-value, object oriented, etc.).But that model is also too complex to be 
handled in a relational DBMS (I'm talking about performance here), that's why 
my new persistence implementations use a mix of XML and relational (EHRServer 
https://github.com/ppazos/cabolabs-ehrserver). This also use openEHR XML for 
commits and yes, it can handle path based queries over the relational DB.
BTW, both projects I mentioned are open source. If you want to learn how they 
work, just download, test and read the code :) If you have any questions, I'm 
here to help.
-- 
Kind regards,
Eng. Pablo Pazos Guti?rrez
http://cabolabs.com

Date: Thu, 8 Aug 2013 16:05:22 -0400
Subject: Re: How to start
From: lexisnexis5...@gmail.com
To: openehr-technical at lists.openehr.org

I am pretty good at Java development. But there are two many documents for a 
prototype. Can you send me a mapping text file and tell me all steps I should 
take to retrieve and save data into database? I have already downloaded 
openehr-aom, openehr-ap, openehr-dao, openehr-rm-core, openehr-rm-domain, 
adl-parser and adl-serializer packages. If you can give me a whole flow, that 
will be big helpful.


Thanks,

David


On Thu, Aug 8, 2013 at 11:36 AM, Ing. Pablo Pazos <pazospablo at hotmail.com> 
wrote:

Please specify what kind of examples do you need. For the software part I 
believe you can do it. The binding is just a mapping of the elements I 
mentioned on my previous messages, in a simple text file.




Sent from my LG Mobile



Lexis Nexis <lexisnexis5490 at gmail.com> wrote:



>May I have some examples? I am starting to understand OpenEHR a little bit.

>

>Thanks,

>

>David

>

>

>On Wed, Aug 7, 2013 at 10:41 PM, Ing. Pablo Pazos <pazospablo at 
>hotmail.com>wrote:

>

>> Create tables, saves and retrieves the.same way you do with any other

>> system. This is not black magic, is just data :)

>>

>> But you need to create the bindings.

>>

>> In 2012 I created bindings and give them to developers of a mobile app for

>> a company in Netherlands (Bert works in that project). The developers only

>> had to understand the bindings, not the whole openEHR paradigm.

>>

>> Sent from my LG Mobile

>>

>> Lexis Nexis <lexisnexis5490 at gmail.com> wrote:

>>

>> >Should I create a new database table to store these fields:

>> >

>> >Last Name:

>> >First Name:

>> >Date of Birth Date:

>> >Gender:

>> >Phone:

>> >Email:

>> >Emergency Contact Person:

>> >

>> >I get confused about how to save and retrieve data and where data are

>> saved?

>> >

>> >Thanks,

>> >

>> >David

>> >

>> >

>> >On Tue, Aug 6, 2013 at 8:59 PM, pablo pazos <pazospablo at hotmail.com>

>> wrote:

>> >

>> >> Hi Lexis, you can grab the demographic Person archetype here:

>> >> http://www.openehr.org/ckm/

>> >>

>> >> Then use the ADL Workbench to extract paths, and map those paths with

>> your

>> >> fields. We call that mapping a "binding" between archetype nodes and

>> >> software elements/artifacts.

>> >>

>> >> --

>> >> Kind regards,

>> >> Eng. Pablo Pazos Guti?rrez

>> >> http://cabolabs.com <http://cabolabs.com/es/home><

>> http://twitter.com/ppazos>

>> >>

>> >> ------------------------------

>> >> Date: Tue, 6 Aug 2013 20:50:29 -0400

>> >> Subject: How to start

>> >> From: lexisnexis5490 at gmail.com

>> >> To: openehr-technical at lists.openehr.org

>> >>

>> >>

>> >> I am a Java developer. I am assigned to develop EHR based on OpenEHR. I

>> >> read some specifications and they seem very complex to me. For

>> instance, I

>> >> want to create a web page like:

>> >>

>> >> Last Name:

>> >> First Name:

>> >> Date of Birth Date:

>> >> Gender:

>> >> Phone:

>> >> Email:

>> >> Emergency Contact Person:

>> >>

>> >> How do I map this object to Archetype?

>> >>

>> >>

>> >> David

>> >>

>> >> _______________________________________________ openEHR-technical

>> mailing

>> >> list openEHR-technical at lists.openehr.org

>> >>

>> http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

>> >>

>> >> _______________________________________________

>> >> openEHR-technical mailing list

>> >> openEHR-technical at lists.openehr.org

>> >>

>> >>

>> http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

>> >>

>> >

>> >_______________________________________________

>> >openEHR-technical mailing list

>> >openEHR-technical at lists.openehr.org

>> >

>> http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

>> _______________________________________________

>> openEHR-technical mailing list

>> openEHR-technical at lists.openehr.org

>>

>> http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

>>

>

>_______________________________________________

>openEHR-technical mailing list

>openEHR-technical at lists.openehr.org

>http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

_______________________________________________

openEHR-technical mailing list

openEHR-technical at lists.openehr.org

http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org



_______________________________________________
openEHR-technical mailing list
openEHR-technical at lists.openehr.org
http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org   
                                  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.openehr.org/pipermail/openehr-technical_lists.openehr.org/attachments/20130810/c2eefd3f/attachment.html>

Reply via email to