Re: [Zope3-Users] Next Step to Bug Resolution???

2009-01-18 Thread Roger Ineichen
Hi Tim

 Betreff: Re: [Zope-dev] [Zope3-Users] Next Step to Bug Resolution???
 
 Hi Dan,
 
 On Sat, 2009-01-17 at 01:28 +0300, Dan Korostelev wrote:
  Hi Tim.
  
  Unfortunately I didn't follow the discussion lately, so may be the 
  problem is no more, but...
 
 There has been a tremendous amount of help from folks like 
 you.  However there is still not a solution.
 
 I have been asked several times for a 15 minute overview.  
 This is tough given the complexity but allow me to ask the 
 question at a more basic
 level.   I believe it is similar to the way I asked it last year, but
 here goes.
 
 I'm not going to address Field or Object here, just explain 
 the basics.
 
 class DataStructure(Persistence):
abstract class

What is Persistence? Where does is come from?

 class ItemStructure(DataStructure):
 abstract class
 
 class ItemList(ItemStructure):
 u
 Logical list data structure, where each item has a value 
 and can be referred to by a name 
 and a positional index in the list. The list may be empty.
 
 
 items = List(
 value_type=Object(schema=IElement),
 title=_(uitems),
 description=_(uPhysical representation of the list.),
 required=False
 )

I hope you don't instanciate any of this classes and use them
for store something. Do you?

Regards
Roger Ineichen

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Next Step to Bug Resolution???

2009-01-18 Thread Tim Cook
On Sun, 2009-01-18 at 15:18 +0100, Roger Ineichen wrote:
  class DataStructure(Persistence):
 abstract class
 
 What is Persistence? Where does is come from?
 

Sorry, I was just typing in a hurry.   In reality it inherits from an
openEHR class called Locatable but that gets into another whole thing
about writing queries one time that run on every openEHR application.


 I hope you don't instanciate any of this classes and use them
 for store something. Do you?

[my next 15 minutes]

No!  These classes are part of a reference model where clinical experts
can use tools to build and govern maximal data sets for clinical
concepts. The tools only give them the options to use classes developed
in the reference model.  These are called archetypes and are represented
in a language called the Archetype Definition Language (A CEN/ISO
standard). 
They are version controlled and every compliant system will have them. 

To describe how they work in an application let's use just one attribute
of blood pressure; 'position'.
So position would be an ItemList that is composed of Elements that are
of type Text.  In the Archetype, position can be one of:
Standing
Sitting
Lying
Reclining

A specific application may only want to use Standing, Sitting, Lying.
So a GUI in one location (triage?) may only want to allow the option of
Sitting.  But say in the ER GUI they may want to also Standing and Lying
or a cardiologist may want to record Reclining (as well as the
+/-angle).  Of course there is lots more to BP than this.  

So at the application level the archetype can be constrained to allow
only certain options and at the GUI level the template can be used to
further  constrain the options for ease AND accuracy of data entry.  

But now everywhere that instance of that BP goes it can be validated
against the archetype and the reference model. 

It really isn't unlike writing Python code that runs on multiple
platforms.  The exception here is that openEHR is also programming
language independent.

OSHIP (the app I'm working on) is the Python implementation of the
openEHR specifications.  It will be a framework for building
interoperable healthcare applications basically by writing only the
templates.  This work is based on more than 20 years of research and
development (and other language implementations). 

More info at:
http://www.openehr.org/shared-resources/getting_started/openehr_primer.html


Cheers,
Tim




attachment: oe_trick.png

signature.asc
Description: This is a digitally signed message part
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Next Step to Bug Resolution???

2008-12-18 Thread Tim Cook
Hi Dan,

Thanks for taking a look.

On Thu, 2008-12-18 at 20:06 +0300, Dan Korostelev wrote:
 Hi, Tim.
 
 I builded out your application and took a quick look at the error. It
 looks like you're mis-using the zope.schema.Field class and its
 interface. It should be only used in schema definition, while you are
 using Field instances as attributes for other objects. For example,
 you are defining the ObjectId as a field, but are using its instances
 as objects. That's not a valid use.

Okay.  I can accept that it might be a mis-use. 

 
 I extracted the problematic code to separate file and changed the
 IField to Interface and Field to ``object`` (though you'll want to use
 Persistent, i guess) for ObjectId and ObjectRef and it works okay. :-)
 

This is actually what I did at first.  You may want to refer to the UML 
http://www.openehr.org/svn/specification/TAGS/Release-1.0.1/publishing/architecture/computable/UML/uml_start_view.html
 

(This is the rm.support.identification package we are looking at)

Since ObjectId is an abstract class so inheriting from object seems
reasonable.  However, most of the other id classes inherit from ObjectId
and when they are used as attributes to other classes they need to have
the meta data expected by zope.schema.  Otherwise you get errors like
keyword required not found (or something similar).  This is true
throughout the model.   So my solution (and CERTAINLY there may be a
better one) was to use the Field class (it is just a Python class -
right?) as the base class for all of the base classes in the model.

As I said before I may have miss-diagnosed the problem and may fix may
break other things?   


 Or, it might be that I don't fully understand your code and
 application architecture, so I would like to hear more about it. It
 looks quite over-engeneered to me.

I fully understand why you might think that.

IF you'll bear with me... healthcare information is very complex
(certainly the complex domain I've run into in 32 years of dealing with
information systems) and the knowledge domain is constantly changing.  I
have a short point paper here
http://timothywayne.cook.googlepages.com/context-lies.pdf that gives a
30,000' view of the issues of semantic interoperability and
computability of healthcare information.

and a good introduction to the domain issues are here:
http://www.openehr.org/shared-resources/getting_started/openehr_primer.html 


This model has more than 20 years of constantly improving RD on this
subject.  The key goal have always been to be abstract enough so that it
can be implemented in any OO language on any platform in any type of
healthcare setting and all stored patient information is guaranteed to
be computable (decision support, etc) as well as maintain it's semantic
integrity over the course of time irregardless of the changes in the
science.  So in essence you can go back to any point in time and not
only know what the blood pressure of the patient was, but also what was
known about blood pressure at that time. 

This model has been implemented in Eiffel, Java, C# and VB.  The
applications (both commercial and open source) have demonstrated these
capabilities.  

Certainly the model isn't perfect but there is a completely open change
management system in place that deals with any changes due to new ares
or new science.  

In order for this Python implementation to remain as true as possible to
the model as well as exercise the value in the ZCA; this is the path I
have taken.  

Thanks for your help.

Cheers,
Tim



   


-- 
Timothy Cook, MSc
Health Informatics Research  Development Services
LinkedIn Profile:http://www.linkedin.com/in/timothywaynecook 
Skype ID == timothy.cook 
**
*You may get my Public GPG key from  popular keyservers or   *
*from this link http://timothywayne.cook.googlepages.com/home*
**
attachment: oe_trick.png

signature.asc
Description: This is a digitally signed message part
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users