Hi Robert, I am not sure which approach is better. Currently, I am thinking about more structured architecture that is more self-descriptive and intuitive. I plan to build a small prototype independent from the current implementation of Care2x. I want to see how the things will look like.
Surely, integration the idea with the current implementation will be tricky, but I don't want to thing about this for now. Let me see it first in the ideal programmatic world. Greetings Kaloyan On Tue, 2006-07-11 at 12:53 +0200, Robert Meggle wrote: > Hello Kaloyan, > > Yes, I understand and got your point and fully agree with you. > > Care_person will hold PID and maybe creation_date. All other fields are > holding foreign keys pointing to their own table. > > Do we need a table with foreign keys or the suggestion of Amel might be > better of having just one unique reference with PID? > > That would mean: The care_person holding just basic patient data: PID, > creation date and an own field for a local used file number what makes > integration to most of the hospitals much easier - they might have an own > manually numbering format and don't want to rewrite all manual files... > There are some other tables like Amel suggesting. There is one what is for > default and you can add individual ones. > > All in all there is a good way what there could be now. That would make the > migration parts to care2x much more easier. > > Robert > > > > -----Ursprüngliche Nachricht----- > > Von: [EMAIL PROTECTED] [mailto:care2002- > > [EMAIL PROTECTED] Im Auftrag von Kaloyan Raev > > Gesendet: Montag, 10. Juli 2006 18:47 > > An: care2002-developers@lists.sourceforge.net > > Betreff: Re: [Care2002-developers] Registration Page / Admission data > > > > Hello, > > > > Robert, your suggestion adds great flexibility to the data structure, > > but unfortunately this way the db schema loses all logic of the data and > > this has to be transferred to the php code. I don't like such approach, > > because in my opinion the db schema should represent the model of the > > data. > > > > I was thinking about some object-oriented style of representing the db > > structure - using inheritance and polymorphism. This is closer to the > > Amel's vision. > > > > Let's take the Patient record. Each patient is a record in the > > care_patient db table and has the following attributes: > > - ID (autoincrement) > > - name (foreign key) > > - citizenship registration (foreign key) > > - date of birth (foreign key) > > - sex > > - social status (foreign key) > > - contact info (foreign key) > > - insurance (foreign key) > > - etc. > > > > Everything that is denoted as 'foreign key' is an attribute that is > > valid for every person in the world, but represented in different way in > > each country. This means these are abstract attributes - abstract by the > > means of OOP. > > > > The foreign key 'name' points to a record in the care_patient_name > > table, where the structure is specialised to the concrete country - > > example: first name, last name, or: first name, father's name, third > > name, tribe. The same with all other foreign keys. > > > > So, each record of the care_patient table is represented in the php code > > as an instance of Patient class. This class has methods as getName(), > > getCitizenshipRegistration(), getDateOfBirth(), getSocialStatus(), etc. > > which returns instances of PatientName, PatientSocialStatus, etc. > > classes. > > > > Then the PatientName is an abstract class that is inherited by specific > > subclass for each country like: > > - USPatientName with methods getFirstName(), getLastName() > > - TanzanianPatientName with methods getFirstName(), getFatherName(), > > getThirdName(), getTribe(). > > > > Amel suggests that there is also presentation information in the > > database like 'text', 'checkbox'... And this information has to be used > > for automatic generation of the pages. In my opinion the database should > > hold only the model and no presentation info. The presentation info > > kills flexibility and is for the templates. Also not everything could be > > automatically generated from the info in the database. For example, data > > validation is hard to be done in the database, especially when you want > > to be database independent. I would rather stick to the idea that every > > db table has its own wrapping php classes like Patient class for > > care_patient db table. > > > > This is just a rough picture. It can be extended to greater complexity > > by using the OOP paradigms as inheritance and polymorphism. > > > > What we urgently need is the model. Good flexible model that is open for > > the special characteristics of the healthcare in each country. > > > > Greetings > > Kaloyan > > > > P.S. about performance: I think this should be the last thing to think > > about. At least the hardware evolves faster than Care2x software at the > > moment ;) > > > > On Mon, 2006-07-10 at 13:40 +0200, Robert Meggle wrote: > > > Hello Reinier and Amel, > > > > > > Yes, maybe we'll getting some performance penalties. Maybe. My > > experiences > > > about these table structure is: > > > When you keep care about the primary key it will not affect too much the > > > query speed, that will not be the issue. I've tested such kind of table > > > couple of times but there was not a measurable time penalty about the > > query > > > speed. Instead all 3rd normal form of databases would rise up speed > > > penalties and this is not the case. > > > > > > More difficulty is the kind of queries you will need to answer a simple > > > question. For the moment you just need one key and you'll get the > > correct > > > row in one line for that result. That's quits simple and very easy to > > > understand. But if you have a kind of hierarchical tree, then you maybe > > need > > > one complex query or maybe two of them (depending what you want to > > know). > > > Other much more relevant point is that we will loose all kind of column > > data > > > types, the content is represented by a global column. Maybe we should > > think > > > about a combination of my idea and the idea of Amel. Then we could keep > > most > > > of the existing table structure. > > > Other issue is that for the moment the PID is a primary master key and > > the > > > database keeps care that this key is unique. For my idea there must be a > > > programmed php class taking care about and this could be risky. > > > > > > Maybe we should follow the idea of Amel. Any other ideas? > > > > > > Reinier, I want to avoid giving attachments to the mailing list when > > there > > > is an alternative way in a simple text mode. It would fill up the > > inboxes of > > > that developers using quite poor bandwidth for internet... > > > Sorry that you had some troubles by reading it. (I gave it as plain text > > and > > > used spaces instead of TAB commands - tested it by outlook and firefox > > and > > > looks well in booth email clients). So sorry about it but in spite of > > that I > > > think you got my point. > > > > > > Robert > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > Von: [EMAIL PROTECTED] > > [mailto:care2002- > > > > [EMAIL PROTECTED] Im Auftrag von Reinier > > > > Gesendet: Montag, 10. Juli 2006 12:46 > > > > An: care2002-developers@lists.sourceforge.net > > > > Betreff: Re: [Care2002-developers] Registration Page / Admission data > > > > > > > > Hi Robert, > > > > > > > > In general, i think this would add a lot of flexibility to the > > > > Registration of patient, which is good. There might be some performace > > > > penalties, we'd have to see if they are manageble. > > > > > > > > The diagram does not come out very well in my mailclient. Maybe you > > could > > > > make a small ER or UML diagram with the tables that you propose and > > the > > > > links between them in a graphic program? > > > > > > > > > > > > rgds, > > > > > > > > reinier > > > > > > > > > > > > On Monday 10 July 2006 12:19, Robert Meggle wrote: > > > > > Hello all, > > > > > > > > > > About the discussion in this list (-> patient registration and the > > big > > > > > vision to get a very flexible structure in it). I want to talk about > > the > > > > > data structure here, not about the GUI realisation part. > > > > > > > > > > Nearly all hospitals, counties, countries will have own ideas of > > storing > > > > > demographic data. > > > > > > > > > > What is the situation right now? The situation is that every > > programmer > > > > what > > > > > have the aim of integration taking the table care_person and add > > their > > > > own > > > > > columns. Or even misusing given ones for their own use. > > > > > For a wider perspective I will suggest an idea. An idea of having a > > > > better > > > > > data structure... Please let's talk about it and give your comments > > to > > > > it: > > > > > > > > > > What is the requirement for a patient Table: > > > > > -> The PID must be unique (is now realized of having an auto- > > increment > > > > > primary key column) > > > > > -> The date-field of the creation date (date_reg) > > > > > -> Optional fields... First name, last name, phone number, street, > > PO- > > > > Box, > > > > > ZIP.... > > > > > > > > > > What do you think about having now following structure? > > > > > > > > > > care_person: > > > > > ID | date_reg | parent | value | data > > > > > 1 | 1998-01-01 00:00:00 | -1 | PID | 1 > > > > > 2 | NULL | 1 | firstname | test > > > > > 3 | NULL | 1 | lastname | nobody > > > > > .. | ... | ... | ... | ... > > > > > 10 | 1998-01-01 00:00:00 | -1 | PID | 1 > > > > > 11 | NULL | 10 | firstname | test person 2 > > > > > 12 | NULL | 10 | lastname | nobody 2 > > > > > ... > > > > > > > > > > > > > > > -> The content (firstname, lastname ...) will be described in an > > > > > additionally table. > > > > > > > > > > Basic idea of this hierarchical structure: A non auto increment- > > > > identifier > > > > > (column: PID) will point to the primary key (column: ID) of the > > table. > > > > If > > > > > the “parent” has the value -1 it will describe the root. If you want > > all > > > > > data’s of this “value” “pid” “1” then you have to select this table > > to > > > > > ID=parent. > > > > > The last table it is not clear for me (for the moment). Idea is that > > > > every > > > > > adaptation can insert there the possible values of the content > > table. > > > > > Additionally to that even the attribute value like “checkbox”, > > “input > > > > > field”, “select box”->and their possible values of it (maybe). > > > > > > > > > > This is quite an idea. Let me know what you think about. This change > > > > will > > > > > affect nearly all kind of modules of care2x (my hope: basically the > > > > > class_core -> but it is quite a lot of work to be done when it > > should > > > > work!) > > > > > > > > > > What I do not like in my idea are following issues: > > > > > -> The primary key-value points to an key (It´s might be okay, but:) > > > > > -> the data column should have a global data type and I do not like > > that > > > > > idea. > > > > > > > > > > Any suggestions or ideas? > > > > > Robert > > > > > > > > > > > > > > > > > > > > > > > > > -------------------------------------------------------------------- > > ---- > > > > - > > > > > 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 > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------- > > --- > > > > 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 > > > > > > > > > > > > ------------------------------------------------------------------------ > > - > > > 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 > > > > > > > > ------------------------------------------------------------------------- > > 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 > > > > ------------------------------------------------------------------------- > 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 ------------------------------------------------------------------------- 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