Hi On 3 March 2010 12:20, Viet Nguyen <[email protected]> wrote: > > Hi, > > Just a quick update about Patient registration form functionality : > > * Check duplicate : > > This function allow user to check for existing patient base on : name , > birthdate, age, gender > > If there is duplicate patient, a pop up will be showed, with the list of all > the duplicated patients. > > From this pop up, user can have two options : > > Continue create the current patient. So there will be two patients with the > same information like above. But their identifiers must be different which > will be checked later. > User can choose a patient from the list duplicated patient to update > information for him, by click on the button "Update this patient" that > follow by each patient in the list. User will then be redirected to the > Update Patient page. > > * Under age patient : > > Under age patient can be understand as a child. The purpose of this field is > not to hard code the age to define a child, like age < 5 or age < 15. > > In the registration form, there is a check box named " Is Underage" . User > check on this check box to identify the patient is a child. A pop up will > be showed after clicking. > > The purpose of this pop up is : user must choose a representative for this > child. Because , some identifiers that are mandatory ( can be defined in > Patient Identifier Type management page ) . But a child can not have those > identifier, so we have to inherit those identifier from the child's > representative. > > Not all identifier can be inherited, you can defined a PatientIdentiferType > is able to inherit or not when creating it. The field name is "Related" > ... ( God ...why didn't I use" Inheritable" .... ) . > > If a PatientIdentifierType with "related" = FALSE and "mandatory" = TRUE > then user must enter value for it. > > Ok, back to the popup, there are two tabs : > > Search existing person : user can search for an existing patient in system > to be the representative of the child. > Add new person : said this is person, because this is not really a patient, > this person is just giving identifier...not enrolling to any program, at > least at this step. Of course the record is also saved to the patient table. > The form just only include basic information ( name , birthdate, gender.. ) > and Identifiers. No attributes is needed. Of course user can update > attributes for this person later by the Update Patient page. > > One problem in this function that I can not have enough time to do : > > In the combo box Relationship Type, there should be Parent and Guardian, I > hard coded this. You should create two relationship type with this > information before testing this function : > > A is to B : Guardian, B is to A : Child > A is to B : Parent , B is to A : Child. > > The list of relationship type should be get from the Relationship type > table. But if we put everything to the combo box, then user may choose > Husband, Wife, or even child...which is so wrong. > > My plan is creating an object RelationshipGroup, which should be based on > the age... > > Anyway, because we are late for releasing this version in India. so hard > code for now is the only solution. I will continue working on this, so > ...please don't worry... > > * System generated identifier : > > I looked at the id_gen module from OpenMRS. Well , they have a whole module > for this which has many functionality for manage system auto generated > identifier. > > I can not have enough time for getting all of that. So what I did is just > get a piece of code that is used for generate a check digit for the ID. > > The format that Indian team chose is : > [BirthDate][Gender][XXXXXX][checkdigit]
Encoding the birthdate and gender into a patient identifier is considered bad practice. Using the orgunit+random digits would be much better. It shouldn't matter if the patient "migrates". The number was simply issued by a particular facility. Regards Bob > > BirthDate : yyyyMMdd > Gender : Male = 1 ; Female = 0 > XXXXXX : a random number with length = 6 ( 0 - 999999 ) > checkdigit : generated using Luhn Algorithm ( thanks to OpenMRS guys ) > > I also changed the way that Abyot generate the birthdate from age ( when > user only enter age ) . > It is : todayCalendar.add( Calendar.YEAR, -1 * age ); > What Abyot did is > todayCalendar.set( Calendar.DATE, 1 ); > todayCalendar.set( Calendar.MONTH, Calendar.JANUARY ); > todayCalendar.add( Calendar.YEAR, -1 * age ); > Because we generate the id base on birthdate , get current date should be > better. > Hope this is ok for Abyot.... > > Each country will have different formats...so I think for current we just > can change code when implementing in the country. Building a module for this > would take time.... > > Finally, but almost those things only follow India 's requirements. > Please give comment then we can try to make it more generic... > > Regards, > > Viet Nguyen > > _______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

