Skip to Navigation | Skip to Content

Ref_impl_Python mailing list archives

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Moving Forward - Project planning


Hi All,

Thanks for your interest in this project.

While there is a fair amount of this project done, there is still much
to do.  

I will publish an "Implementation Technology Specification" (ITS) in the
next few days.  I developed it several months ago but it certainly needs
updating at this point.  This guide will describe the variances between
OSHIP and the specifications.  It is also a, kind of, developers guide.
I will appreciate feedback on it so it can serve as a communications
tool to new developers and users of OSHIP.

The current work status is that many classes exist only as an Interface
and a shell implementation. These are very well documented not only in
the code but in the specification documents as well. The header of each
file tells you which document it came from. You can get a complete set
of openEHR specifications from SVN at
http://www.openehr.org/svn/specification/TRUNK/publishing/ 

I have included a filelisting of the openehr package below.  If you can
choose just one class and create an implementation according to the
specifications it will help immensely.  Many classes have __init__
functions and only need the methods to be implemented. Once you complete
a class; email it to me and I will add it to OSHIP.  After a couple of
classes I will ask for you to be added to the SVN commit list.  

Probably the most challenging class to do right now is DvInterval.
Python doesn't have a builtin or library function for Interval but there
is an open source Interval.py in the rm.support package.  If someone can
implement this according to the specifications it would be a great help.

In case you aren't familiar with Interfaces, especially because they are
not part of the Python language.  They are used to define the 'what' of
a class.  The attributes and methods.  Interfaces set the stage for a
contract where a class implements an Interface then it is supposed to
provide the functionality of that Interface.  Because Interfaces aren't
part of the Python language, I have been able to cheat and say that
classes implement Interfaces when they really do not; yet.  There are
functions defined in the zope.interface package that provide for this
assurance once the class is actually implemented. 
But that is all for a later version of OSHIP.  Right now we need to
build __init__ functions and develop methods in the implementations.
You should note that each class in a package is in a file of its own and
the associated Interface in is a file of the same name in the interfaces
sub-directory of the package. The classes in OSHIP all inherit from
zope.schema Field giving them some meta-data not in the openEHR specs.
This meta-data includes title and description (where the translation
strings came from) as well as required, default value and constraint
functionality. 

The book, "Web Component Development with Zope3" by Philipp von
Weitershausen can be particularly helpful in understanding some of these
concepts.  

While complete class implementations would be great.  If you only have a
few minutes you can create some __init__ functions for classes that do
not have them yet.  Email it to me and I'll check it and paste it in.
For an example see the rm.datatypes.codephrase.py file. Again, the
attribute list for each class is in the associated Interface file. This
will save me a bunch of typing time and help you become more familiar
with the openEHR model and it frees me up to continue work on the
archetype builder.

Cheers,
Tim

./openehr:
am
__init__.py
__init__.pyc
rm
sm

./openehr/am:
adl
archetype
__init__.py
__init__.pyc

./openehr/am/adl:
__init__.py
tests

./openehr/am/adl/tests:
__init__.py

./openehr/am/archetype:
archetype.py
archetype.pyc
assertion
constraintmodel
__init__.py
__init__.pyc
interfaces
ontology
openehrarchetypeprofile
template
validitykind.py

./openehr/am/archetype/assertion:
assertion.py
assertionvariable.py
exprbinaryoperator.py
expritem.py
exprleaf.py
exproperator.py
exprunaryoperator.py
__init__.py
interfaces
operatorkind.py

./openehr/am/archetype/assertion/interfaces:
assertion.py
assertionvariable.py
exprbinaryoperator.py
expritem.py
exprleaf.py
exproperator.py
exprunaryoperator.py
__init__.py
operatorkind.py

./openehr/am/archetype/constraintmodel:
archetypeconstraint.py
archetypeinternalref.py
archetypeslot.py
cardinality.py
cattribute.py
cattribute.pyc
ccomplexobject.py
ccomplexobject.pyc
cdefinedobject.py
cdefinedobject.pyc
cdomaintype.py
cmultipleattribute.py
cobject.py
cobject.pyc
constraintref.py
cprimitiveobject.py
creferenceobject.py
csingleattribute.py
__init__.py
__init__.pyc
interfaces
primitive

./openehr/am/archetype/constraintmodel/interfaces:
archetypeconstraint.py
archetypeinternalref.py
archetypeslot.py
cardinality.py
cattribute.py
cattribute.pyc
ccomplexobject.py
ccomplexobject.pyc
cdefinedobject.py
cdefinedobject.pyc
cdomaintype.py
cmultipleattribute.py
cobject.py
cobject.pyc
constraintref.py
cprimitiveobject.py
creferenceobject.py
csingleattribute.py
__init__.py
__init__.pyc

./openehr/am/archetype/constraintmodel/primitive:
cboolean.py
cdate.py
cdatetime.py
cduration.py
cinteger.py
cprimitive.py
creal.py
ctime.py
__init__.py
interfaces

./openehr/am/archetype/constraintmodel/primitive/interfaces:
cboolean.py
cdate.py
cdatetime.py
cduration.py
cinteger.py
cprimitive.py
creal.py
ctime.py
__init__.py

./openehr/am/archetype/interfaces:
archetype.py
archetype.pyc
__init__.py
__init__.pyc
validitykind.py

./openehr/am/archetype/ontology:
archetypeontology.py
archetypeontology.pyc
archetypeterm.py
__init__.py
__init__.pyc
interfaces

./openehr/am/archetype/ontology/interfaces:
archetypeontology.py
archetypeontology.pyc
archetypeterm.py
__init__.py
__init__.pyc

./openehr/am/archetype/openehrarchetypeprofile:
__init__.py
interfaces

./openehr/am/archetype/openehrarchetypeprofile/interfaces:
__init__.py

./openehr/am/archetype/template:
__init__.py
interfaces

./openehr/am/archetype/template/interfaces:
__init__.py

./openehr/rm:
common
datastructures
datatypes
demographic
ehr
extract
__init__.py
__init__.pyc
integration
support
tests

./openehr/rm/common:
archetyped
changecontrol
directory
generic
__init__.py
__init__.pyc
resource
tests

./openehr/rm/common/archetyped:
archetyped.py
feederauditdetails.py
feederaudit.py
__init__.py
interfaces
link.py
locatable.py
pathable.py

./openehr/rm/common/archetyped/interfaces:
archetyped.py
feederauditdetails.py
feederaudit.py
__init__.py
link.py
locatable.py
pathable.py

./openehr/rm/common/changecontrol:
contribution.py
importedversion.py
__init__.py
interfaces
originalversion.py
versionedobject.py
version.py

./openehr/rm/common/changecontrol/interfaces:
contribution.py
importedversion.py
__init__.py
originalversion.py
versionedobject.py
version.py

./openehr/rm/common/directory:
folder.py
__init__.py
interfaces
versionedfolder.py

./openehr/rm/common/directory/interfaces:
folder.py
__init__.py
versionedfolder.py

./openehr/rm/common/generic:
attestation.py
auditdetails.py
__init__.py
__init__.pyc
interfaces
participation.py
partyidentified.py
partyproxy.py
partyrelated.py
partyself.py
revisionhistoryitem.py
revisionhistory.py
revisionhistory.pyc

./openehr/rm/common/generic/interfaces:
attestation.py
auditdetails.py
__init__.py
__init__.pyc
participation.py
partyidentified.py
partyproxy.py
partyrelated.py
partyself.py
revisionhistoryitem.py
revisionhistory.py
revisionhistory.pyc

./openehr/rm/common/resource:
authoredresource.py
authoredresource.pyc
__init__.py
__init__.pyc
interfaces
resourcedescriptionitem.py
resourcedescription.py
resourcedescription.pyc
translationdetails.py
translationdetails.pyc

./openehr/rm/common/resource/interfaces:
authoredresource.py
authoredresource.pyc
__init__.py
__init__.pyc
resourcedescriptionitem.py
resourcedescription.py
translationdetails.py
translationdetails.pyc

./openehr/rm/common/tests:
__init__.py

./openehr/rm/datastructures:
datastructure.py
history
__init__.py
interfaces
itemstructure
tests

./openehr/rm/datastructures/history:
event.py
history.py
__init__.py
interfaces
intervalevent.py
pointevent.py

./openehr/rm/datastructures/history/interfaces:
event.py
history.py
__init__.py
intervalevent.py
pointevent.py

./openehr/rm/datastructures/interfaces:
datastructure.py
__init__.py

./openehr/rm/datastructures/itemstructure:
__init__.py
interfaces
itemlist.py
itemsingle.py
itemstructure.py
itemtable.py
itemtree.py
representation

./openehr/rm/datastructures/itemstructure/interfaces:
__init__.py
itemlist.py
itemsingle.py
itemstructure.py
itemtable.py
itemtree.py

./openehr/rm/datastructures/itemstructure/representation:
cluster.py
element.py
__init__.py
interfaces
item.py

./openehr/rm/datastructures/itemstructure/representation/interfaces:
cluster.py
element.py
__init__.py
item.py

./openehr/rm/datastructures/tests:
__init__.py

./openehr/rm/datatypes:
basic
encapsulated
__init__.py
__init__.pyc
quantity
tests
text
timespecification
uri

./openehr/rm/datatypes/basic:
datavalue.py
datavalue.pyc
dvboolean.py
dvidentifier.py
dvstate.py
__init__.py
__init__.pyc
interfaces

./openehr/rm/datatypes/basic/interfaces:
datavalue.py
datavalue.pyc
dvboolean.py
dvidentifier.py
dvstate.py
__init__.py
__init__.pyc

./openehr/rm/datatypes/encapsulated:
dvencapsulated.py
dvmultimedia.py
dvparsable.py
__init__.py
interfaces
thumbnail.py

./openehr/rm/datatypes/encapsulated/interfaces:
dvencapsulated.py
dvmultimedia.py
dvparsable.py
__init__.py
thumbnail.py

./openehr/rm/datatypes/quantity:
datetime
dvabsolutequantity.py
dvamount.py
dvcount.py
dvinterval.py
dvordered.py
dvordinal.py
dvproportion.py
dvquantified.py
dvquantity.py
__init__.py
interfaces
referencerange.py

./openehr/rm/datatypes/quantity/datetime:
dvdate.py
dvdatetime.py
dvduration.py
dvtemporal.py
dvtime.py
__init__.py
interfaces

./openehr/rm/datatypes/quantity/datetime/interfaces:
dvdate.py
dvdatetime.py
dvduration.py
dvtemporal.py
dvtime.py
__init__.py

./openehr/rm/datatypes/quantity/interfaces:
dvabsolutequantity.py
dvamount.py
dvcount.py
dvinterval.py
dvordered.py
dvordinal.py
dvproportion.py
dvquantified.py
dvquantity.py
__init__.py
referencerange.py

./openehr/rm/datatypes/tests:
__init__.py

./openehr/rm/datatypes/text:
codephrase.py
codephrase.pyc
dvcodedtext.py
dvparagraph.py
dvtext.py
dvtext.pyc
__init__.py
__init__.pyc
interfaces
termmapping.py

./openehr/rm/datatypes/text/interfaces:
codephrase.py
codephrase.pyc
dvcodedtext.py
dvparagraph.py
dvtext.py
dvtext.pyc
__init__.py
__init__.pyc
termmapping.py

./openehr/rm/datatypes/timespecification:
dvgeneraltimespecification.py
dvperiodictimespecification.py
dvtimespecification.py
__init__.py
interfaces

./openehr/rm/datatypes/timespecification/interfaces:
dvgeneraltimespecification.py
dvperiodictimespecification.py
dvtimespecification.py
__init__.py

./openehr/rm/datatypes/uri:
dvehruri.py
dvuri.py
__init__.py
interfaces

./openehr/rm/datatypes/uri/interfaces:
dvehruri.py
dvuri.py
__init__.py

./openehr/rm/demographic:
actor.py
address.py
agent.py
capability.py
contact.py
group.py
__init__.py
interfaces
organisation.py
partyidentified.py
partyidentity.py
party.py
partyrelationship.py
person.py
role.py
tests

./openehr/rm/demographic/interfaces:
actor.py
address.py
agent.py
capability.py
contact.py
group.py
__init__.py
organisation.py
partyidentified.py
partyidentity.py
party.py
partyrelationship.py
person.py
role.py

./openehr/rm/demographic/tests:
__init__.py

./openehr/rm/ehr:
composition
ehraccess.py
ehr.py
ehrstatus.py
__init__.py
interfaces
tests
versionedcomposition.py
versionedehraccess.py
versionedehrstatus.py

./openehr/rm/ehr/composition:
composition.py
content
eventcontext.py
__init__.py
interfaces

./openehr/rm/ehr/composition/content:
contentitem.py
entry
__init__.py
interfaces
navigation

./openehr/rm/ehr/composition/content/entry:
action.py
activity.py
adminentry.py
careentry.py
entry.py
evaluation.py
__init__.py
instructiondetails.py
instruction.py
interfaces
ismtransition.py
observation.py

./openehr/rm/ehr/composition/content/entry/interfaces:
action.py
activity.py
adminentry.py
careentry.py
entry.py
evaluation.py
__init__.py
instructiondetails.py
instruction.py
ismtransition.py
observation.py

./openehr/rm/ehr/composition/content/interfaces:
contentitem.py
__init__.py

./openehr/rm/ehr/composition/content/navigation:
__init__.py
interfaces
section.py
xnavigation.py

./openehr/rm/ehr/composition/content/navigation/interfaces:
__init__.py
section.py

./openehr/rm/ehr/composition/interfaces:
composition.py
eventcontext.py
__init__.py

./openehr/rm/ehr/interfaces:
ehraccess.py
ehr.py
ehrstatus.py
__init__.py
versionedcomposition.py
versionedehraccess.py
versionedehrstatus.py

./openehr/rm/ehr/tests:
__init__.py

./openehr/rm/extract:
common
ehrextract
genericextract
__init__.py
interfaces
message
syncextract

./openehr/rm/extract/common:
__init__.py
interfaces

./openehr/rm/extract/common/interfaces:
__init__.py

./openehr/rm/extract/ehrextract:
__init__.py
interfaces

./openehr/rm/extract/ehrextract/interfaces:
__init__.py

./openehr/rm/extract/genericextract:
__init__.py
interfaces

./openehr/rm/extract/genericextract/interfaces:
__init__.py

./openehr/rm/extract/interfaces:
__init__.py

./openehr/rm/extract/message:
__init__.py
interfaces

./openehr/rm/extract/message/interfaces:
__init__.py

./openehr/rm/extract/syncextract:
__init__.py
interfaces

./openehr/rm/extract/syncextract/interfaces:
__init__.py

./openehr/rm/integration:
genericentry.py
__init__.py
interfaces
tests

./openehr/rm/integration/interfaces:
genericentry.py
__init__.py

./openehr/rm/integration/tests:
__init__.py

./openehr/rm/support:
definition
identification
__init__.py
__init__.pyc
interval.py
interval.pyc
measurement
terminology
tests

./openehr/rm/support/definition:
basicdefinitions.py
__init__.py
interfaces
openehrdefinitions.py

./openehr/rm/support/definition/interfaces:
basicdefinitions.py
__init__.py
openehrdefinitions.py

./openehr/rm/support/identification:
accessgroupref.py
archetypeid.py
archetypeid.pyc
genericid.py
hierobjectid.py
hierobjectid.pyc
__init__.py
__init__.pyc
interfaces
internetid.py
isooid.py
locatableref.py
objectid.py
objectid.pyc
objectref.py
objectref.pyc
objectversionid.py
partyref.py
templateid.py
terminologyid.py
uidbasedid.py
uidbasedid.pyc
uid.py
uuid.py
versiontreeid.py

./openehr/rm/support/identification/interfaces:
accessgroupref.py
archetypeid.py
archetypeid.pyc
genericid.py
hierobjectid.py
hierobjectid.pyc
__init__.py
__init__.pyc
internetid.py
isooid.py
locatableref.py
objectid.py
objectid.pyc
objectref.py
objectref.pyc
objectversionid.py
partyref.py
templateid.py
terminologyid.py
uidbasedid.py
uidbasedid.pyc
uid.py
uuid.py
versiontreeid.py

./openehr/rm/support/measurement:
__init__.py
interfaces
measurementservice.py

./openehr/rm/support/measurement/interfaces:
__init__.py
measurementservice.py

./openehr/rm/support/terminology:
codesetaccess.py
__init__.py
interfaces
openehrcodesetidentifiers.py
openehrterminologygroupidentifiers.py
terminologyaccess.py
terminologyservice.py

./openehr/rm/support/terminology/interfaces:
codesetaccess.py
__init__.py
openehrcodesetidentifiers.py
openehrterminologygroupidentifiers.py
terminologyaccess.py
terminologyservice.py

./openehr/rm/support/tests:
__init__.py

./openehr/rm/tests:
__init__.py

./openehr/sm:
ehr
__init__.py
tests

./openehr/sm/ehr:
__init__.py
tests

./openehr/sm/ehr/tests:
__init__.py

./openehr/sm/tests:
__init__.py









-- 
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: signature.asc
Description: This is a digitally signed message part

_______________________________________________
ref_impl_python mailing list
ref_impl_python@openehr.org
http://lists.chime.ucl.ac.uk/mailman/listinfo/ref_impl_python