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