Hello. The idea or plugins is great and would make possible to keep more different type of modules within one branch. Mauri
On 28 Jun 2006 at 23:47, Kaloyan Raev wrote: > Hello, > > One of the greatest challenges in front of the Care2x is adoption in > different kinds of hospitals in different kinds of places in the world. > The healthcare in different countries has different requirements. In > some countries these requirements change year-by-year (or even more > frequently). Even there are hospital that has their own requirements for > the HIS system. > > Care2x tries to be as generic as possible to fit the needs to the > greatest extent of the hospitals. But it is not possible Care2x to fit > the needs of all of the hospitals (or even to one of them) just > out-of-the-box. For every solution Care2x has to be more or less > customised. > > Let's take as example the solution for East Africa. The healthcare in > USA and Tanzania has very significant differences. This led the > developers to the idea of making separate branch (ELCT) for the East > Africa solution. And they are right! The customisation of the original > Care2x, however, is so big and specific, that it is hard to decide what > of the features implemented in ELCT could be contributed back to the > main branch. Sometimes it would need additional efforts to make new > feature as general as to fit in the original Care2x branch. > > At the current state of the Care2x architecture branching for specific > solutions is inevitable. On the other hand, keeping Care2x as generic as > possible makes the process of merging features back to the main branch > hardly possible. > > Customisation is necessity. What has to be changed in the Care2x > architecture is that there should be a framework that defines strict > rules how Care2x can be customised. This framework should give great > flexibility for customisation and in the same time keep these > customisations as closest as possible to the main branch. Actually, > there should only one branch - the main branch. > > There is a solution for this at the moment, but for desktop applications > - the Eclipse project [1]. This project defines a plugin framework where > each plugin is a separate module that contributes features to the > application as a whole. Plugins has dependencies between them and one > plugin can customise a feature defined in its dependant plugin using the > so called "extension points". > > I believe something similar can be done for php web applications as > well. The generic HIS functionality can be implemented in basic plugins > that define extension points for customising specific features. These > extension point will be used by plugins for specific solutions. At the > the solution for specific country or hospital will be distribution of a > set of plugins. > > Let me visualise the idea in an example. Let's take the patient > registration form. If we generalise the patient registration record it > would include the following features: > - system id > - name > - sex > - date of birth > - citizenship registration (citizenship id, country, address,..) > - contact (phone, mail, fax, ..) > - insurance info > - blood group > - etc. > > If we examine only the 'name' feature we will see that it has lots of > attributes in different countries: title, first name, last name, middle > name, maiden name, third name, ..., Nth name, tribe, caste, ..., > whatever attributes I have never heard of. Each country uses different > subset of these attributes to identify its citizens: > - USA: title, first name, last name > - Bulgaria: first name, middle name, last name > - Tanzania: first name, fathers name, third name, tribe > - India: I've heard there they have lots of names. > > Now let's have 'care2x_patient' plugin that defines the patient > registration record model. In this plugin there will be an extension > point defined for the 'name' feature. Attributes for the 'name' > extension point will be contributed by other customisation plugins > like: > - care2x_patient_usa - contributes first name, last name, title > - care2x_patient_bulgaria - first name, middle name, last name > - care2x_patient_tanzania - first name, fathers name, third name, > tribe > > At the end the solution for Tanzania will be set of plugins that include > care2x_patient and care2x_patient_tanzania, but not > care2x_patient_bulgaria and care2x_patient_usa. > > An assembler script will go through the set of plugins and will evaluate > the dependencies, extension points and extension contributions. It will > construct the solution-specific database schema that will be used by the > installer. At runtime the extension points should be evaluated as well. > For example a patient search form should lookup the attributes for the > 'name' feature to decide what fields to generate in the search form. > > Such kind of plugins framework separates the application design from the > basic code implementation. All of the Care2x design has to be migrated > to models that describe each feature of the system and defines extension > points for customisable ones. The basic code implementation - the > framework - will actually exploit the model to provide the necessary > functionality. Such separation is for good, because developers with > stronger medical background can concentrate on the models, while those > will stronger programming skills can work mainly on the framework. > Upgrades to newer versions of Care2x will also be executed with much > less problems, because the customisations are isolated in separate > plugins. > > I want to here your opinion, suggestions and questions about this > proposal. I realise that this is a major architectural change and is not > achievable in short term. I am seeing it in a future major version of > Care2x like 3.0. I am also planning to make a simple prototype (proof of > concept) of this idea as diploma work. So, hopefully, I will be able to > show you something in the near months. > > [1] http://www.eclipse.org/ > > Greetings > Kaloyan > > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Care2002-developers mailing list > Care2002-developers@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/care2002-developers > > > > -- > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.1.394 / Virus Database: 268.9.5/377 - Release Date: 27.6.2006 > -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.6/378 - Release Date: 28.6.2006 Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Care2002-developers mailing list Care2002-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/care2002-developers