=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryregistration/action/SaveBeneficiaryAction.java' --- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryregistration/action/SaveBeneficiaryAction.java 2013-05-15 10:18:28 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryregistration/action/SaveBeneficiaryAction.java 2013-05-20 05:48:15 +0000 @@ -39,7 +39,6 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.struts2.StrutsStatics; import org.hisp.dhis.light.utils.FormUtils; -import org.hisp.dhis.light.utils.PatientIdentifierGenerator; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.patient.Patient; import org.hisp.dhis.patient.PatientAttribute; @@ -55,6 +54,7 @@ import org.hisp.dhis.program.Program; import org.hisp.dhis.program.ProgramService; import org.hisp.dhis.util.ContextUtils; +import org.hisp.dhis.patient.util.PatientIdentifierGenerator; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; === removed file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/utils/PatientIdentifierGenerator.java' --- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/utils/PatientIdentifierGenerator.java 2013-05-08 01:59:32 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/utils/PatientIdentifierGenerator.java 1970-01-01 00:00:00 +0000 @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2004-2009, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.light.utils; - -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Random; - -/** - * @author Viet - */ -public class PatientIdentifierGenerator -{ - /** - * Creates a new Patient Identifier: (BirthDate)(Gender)(XXXXXX)(checkdigit)
- * BirthDate = YYYYMMDD
- * Gender = Male : 1 | Female : 0
- * XXXXXX = random digits e.g. from 0 - 999999
- * checkdigit= using the Lunh Algorithm - * - * @param birthDate - * @param gender - * @return - */ - public static String getNewIdentifier( Date birthDate, String gender ) - { - String noCheck = formatDate( birthDate ) + formatGender( gender ) - + getFixLengthOfNumber( new Random().nextInt( 100000 ), 6 ); - return noCheck + getCheckdigit( noCheck ); - } - - /** - * Using the Luhn Algorithm to generate check digits - * - * @param idWithoutCheckdigit - * @return idWithCheckdigit - */ - private static int getCheckdigit( String idWithoutCheckdigit ) - { - idWithoutCheckdigit = idWithoutCheckdigit.trim().toUpperCase(); - int sum = 0; - for ( int i = 0; i < idWithoutCheckdigit.length(); i++ ) - { - char ch = idWithoutCheckdigit.charAt( idWithoutCheckdigit.length() - i - 1 ); - - int digit = ch - 48; - int weight; - if ( i % 2 == 0 ) - { - weight = (2 * digit) - (digit / 5) * 9; - } - else - { - weight = digit; - } - sum += weight; - } - sum = Math.abs( sum ) + 10; - return (10 - (sum % 10)) % 10; - } - - public static boolean isValidCC( String num ) - { - final int[][] sumTable = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 } }; - int sum = 0, flip = 0; - - for ( int i = num.length() - 1; i >= 0; i--, flip++ ) - sum += sumTable[flip & 0x1][num.charAt( i ) - '0']; - return sum % 10 == 0; - } - - private static String getFixLengthOfNumber( long number, int length ) - { - int i = 0; - String pattern = ""; - if ( length == 0 ) - pattern = "000000"; - while ( i < length && length > 0 ) - { - pattern += "0"; - i++; - } - DecimalFormat df = new DecimalFormat( pattern ); - return df.format( number ); - } - - private static String formatDate( Date birthDate ) - { - SimpleDateFormat formater = new SimpleDateFormat( "yyyyMMdd" ); - String bd = formater.format( birthDate ); - return bd; - } - - private static String formatGender( String gender ) - { - return gender.equalsIgnoreCase( "f" ) ? "0" : "1"; - } -}