dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #18137
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 7525: Improve the function of nested search patient
------------------------------------------------------------
revno: 7525
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2012-07-06 16:59:36 +0700
message:
Improve the function of nested search patient
removed:
dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchPatientAction.java
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/Patient.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueService.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueStore.java
dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java
dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java
dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/DefaultPatientAttributeValueService.java
dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/hibernate/HibernatePatientAttributeValueStore.java
dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/SearchPatientAction.java
dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml
dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml
dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/commons.js
dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/searchPatientCriteria.vm
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/Patient.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/Patient.java 2012-07-06 04:04:41 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/Patient.java 2012-07-06 09:59:36 +0000
@@ -49,20 +49,21 @@
private static final long serialVersionUID = 884114994005945275L;
public static final String MALE = "M";
-
public static final String FEMALE = "F";
public static final char DOB_TYPE_VERIFIED = 'V';
-
public static final char DOB_TYPE_DECLARED = 'D';
-
public static final char DOB_TYPE_APPROXIATED = 'A';
public static final char AGE_TYPE_YEAR = 'Y';
-
public static final char AGE_TYPE_MONTH = 'M';
-
public static final char AGE_TYPE_DAY = 'D';
+
+ public static String PREFIX_IDENTIFIER_TYPE = "iden";
+ public static String PREFIX_FIXED_ATTRIBUTE = "fixedAttr";
+ public static String PREFIX_PATIENT_ATTRIBUTE = "attr";
+ public static String PREFIX_PROGRAM = "prg";
+
private Integer id;
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java 2012-06-12 07:46:25 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java 2012-07-06 09:59:36 +0000
@@ -203,4 +203,7 @@
void removeErollmentPrograms( Program program );
+ Collection<Patient> searchPatients( List<String> searchKeys, OrganisationUnit orgunit, Integer min, Integer max );
+
+ int countSearchPatients( List<String> searchKeys, OrganisationUnit orgunit );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java 2012-06-12 07:46:25 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java 2012-07-06 09:59:36 +0000
@@ -29,6 +29,7 @@
import java.util.Collection;
import java.util.Date;
+import java.util.List;
import org.hisp.dhis.common.GenericStore;
import org.hisp.dhis.organisationunit.OrganisationUnit;
@@ -64,4 +65,8 @@
int countGetPatientsByOrgUnitProgram( OrganisationUnit organisationUnit, Program program );
void removeErollmentPrograms( Program program );
+
+ Collection<Patient> search( List<String> searchKeys, OrganisationUnit orgunit, Integer min, Integer max );
+
+ int countSearch( List<String> searchKeys, OrganisationUnit orgunit );
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueService.java 2012-05-24 13:53:25 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueService.java 2012-07-06 09:59:36 +0000
@@ -27,10 +27,8 @@
package org.hisp.dhis.patientattributevalue;
import java.util.Collection;
-import java.util.List;
import java.util.Map;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.patient.Patient;
import org.hisp.dhis.patient.PatientAttribute;
import org.hisp.dhis.patient.PatientAttributeOption;
@@ -76,20 +74,6 @@
Collection<Patient> getPatient( PatientAttribute attribute, String value );
- Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText, int min, int max);
-
- Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText );
-
- Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, int min, int max);
-
- Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, OrganisationUnit orgunit, int min, int max);
-
- int countSearchPatientAttributeValue( PatientAttribute patientAttribute, String searchText );
-
- int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts );
-
- int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, OrganisationUnit orgunit );
-
void updatePatientAttributeValues( PatientAttributeOption patientAttributeOption);
Collection<PatientAttributeValue> getPatientAttributeValues( Patient patient, Program program );
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueStore.java 2012-05-24 13:53:25 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientattributevalue/PatientAttributeValueStore.java 2012-07-06 09:59:36 +0000
@@ -27,10 +27,8 @@
package org.hisp.dhis.patientattributevalue;
import java.util.Collection;
-import java.util.List;
import org.hisp.dhis.common.GenericStore;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.patient.Patient;
import org.hisp.dhis.patient.PatientAttribute;
import org.hisp.dhis.patient.PatientAttributeOption;
@@ -65,20 +63,6 @@
Collection<Patient> getPatient( PatientAttribute attribute, String value );
- Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText, int min, int max);
-
- Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText );
-
- Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, int min, int max);
-
- Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, OrganisationUnit orgunit, int min, int max);
-
- int countSearchPatientAttributeValue( PatientAttribute patientAttribute, String searchText );
-
- int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts );
-
- int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, OrganisationUnit orgunit );
-
void updatePatientAttributeValues( PatientAttributeOption patientAttributeOption);
Collection<PatientAttributeValue> get( Patient patient, Program program );
=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java 2012-06-12 07:46:25 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java 2012-07-06 09:59:36 +0000
@@ -522,4 +522,14 @@
{
patientStore.removeErollmentPrograms( program );
}
+
+ public Collection<Patient> searchPatients( List<String> searchKeys, OrganisationUnit orgunit, Integer min, Integer max )
+ {
+ return patientStore.search( searchKeys, orgunit, min, max );
+ }
+
+ public int countSearchPatients( List<String> searchKeys, OrganisationUnit orgunit )
+ {
+ return patientStore.countSearch( searchKeys, orgunit );
+ }
}
=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java 2012-06-12 07:46:25 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java 2012-07-06 09:59:36 +0000
@@ -32,6 +32,7 @@
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.amplecode.quick.StatementHolder;
@@ -89,7 +90,7 @@
// -------------------------------------------------------------------------
// Implementation methods
// -------------------------------------------------------------------------
-
+
@SuppressWarnings( "unchecked" )
@Override
public Collection<Patient> getByGender( String gender )
@@ -139,8 +140,7 @@
@SuppressWarnings( "unchecked" )
@Override
- public Collection<Patient> get( String firstName, String middleName, String lastName, Date birthdate,
- String gender )
+ public Collection<Patient> get( String firstName, String middleName, String lastName, Date birthdate, String gender )
{
Criteria crit = getCriteria();
Conjunction con = Restrictions.conjunction();
@@ -182,18 +182,19 @@
@SuppressWarnings( "unchecked" )
@Override
- public Collection<Patient> getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program, Integer min, Integer max )
+ public Collection<Patient> getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program, Integer min,
+ Integer max )
{
- Criteria criteria = getCriteria( Restrictions.eq( "organisationUnit", organisationUnit ) ).createAlias( "programs",
- "program" ).add( Restrictions.eq( "program.id", program.getId() ) );
-
- criteria.addOrder( Order.desc( "id" ) );
-
- if( min != null && max != null )
- {
- criteria.setFirstResult( min ).setMaxResults( max );
- }
- return criteria.list();
+ Criteria criteria = getCriteria( Restrictions.eq( "organisationUnit", organisationUnit ) ).createAlias(
+ "programs", "program" ).add( Restrictions.eq( "program.id", program.getId() ) );
+
+ criteria.addOrder( Order.desc( "id" ) );
+
+ if ( min != null && max != null )
+ {
+ criteria.setFirstResult( min ).setMaxResults( max );
+ }
+ return criteria.list();
}
@Override
@@ -240,9 +241,9 @@
@Override
public int countGetPatientsByOrgUnitProgram( OrganisationUnit organisationUnit, Program program )
{
- Number rs = (Number) getCriteria( Restrictions.eq( "organisationUnit", organisationUnit ) ).createAlias(
- "programs", "program" ).add( Restrictions.eq( "program.id", program.getId() ) ).setProjection(
- Projections.rowCount() ).uniqueResult();
+ Number rs = (Number) getCriteria( Restrictions.eq( "organisationUnit", organisationUnit ) )
+ .createAlias( "programs", "program" ).add( Restrictions.eq( "program.id", program.getId() ) )
+ .setProjection( Projections.rowCount() ).uniqueResult();
return rs != null ? rs.intValue() : 0;
}
@@ -263,4 +264,136 @@
jdbcTemplate.execute( sql );
}
+
+ @Override
+ public Collection<Patient> search( List<String> searchKeys, OrganisationUnit orgunit, Integer min, Integer max )
+ {
+ String sql = searchPatientSql( false, searchKeys, orgunit, min, max );
+ Collection<Patient> patients = new HashSet<Patient>();
+ StatementHolder holder = statementManager.getHolder();
+ try
+ {
+ Statement statement = holder.getStatement();
+
+ ResultSet resultSet = statement.executeQuery( sql );
+
+ if ( resultSet.next() )
+ {
+ int patientId = resultSet.getInt( 1 );
+ patients.add( get( patientId ) );
+ }
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ finally
+ {
+ holder.close();
+ }
+
+ return patients;
+ }
+
+ public int countSearch( List<String> searchKeys, OrganisationUnit orgunit )
+ {
+ String sql = searchPatientSql( true, searchKeys, orgunit, null, null );
+
+ return jdbcTemplate.queryForInt( sql );
+ }
+
+ // -------------------------------------------------------------------------
+ // Supportive methods
+ // -------------------------------------------------------------------------
+
+ private String searchPatientSql( boolean count, List<String> searchKeys, OrganisationUnit orgunit, Integer min, Integer max )
+ {
+ String selector = count ? "count(*) " : "* ";
+
+ String sql = "select " + selector + " from ( select distinct p.patientid, p.firstname, p.middlename, p.lastname, p.gender, p.phonenumber, p.birthdate, p.deathdate,";
+ String patientWhere = "";
+ String patientOperator = " where ";
+ String otherWhere = "";
+ String operator = " where ";
+ boolean hasIdentifier = false;
+
+ for ( String searchKey : searchKeys )
+ {
+ String[] keys = searchKey.split( "_" );
+ String id = keys[1];
+ String value = "";
+ if ( keys.length == 3 )
+ {
+ value = keys[2];
+ }
+
+ if ( keys[0].equals( Patient.PREFIX_FIXED_ATTRIBUTE ) )
+ {
+ patientWhere += patientOperator + " lower(p." + id + ")='" + value + "'";
+ patientOperator = " and ";
+ }
+ else if ( keys[0].equals( Patient.PREFIX_IDENTIFIER_TYPE ) )
+ {
+ int startIndex = id.indexOf( ' ' );
+ int endIndex = id.lastIndexOf( ' ' );
+ String firstName = id.substring( 0, startIndex );
+ String middleName = "";
+ String lastName = "";
+
+ if ( startIndex == endIndex )
+ {
+ middleName = "";
+ lastName = id.substring( startIndex + 1, id.length() );
+ }
+ else
+ {
+ middleName = id.substring( startIndex + 1, endIndex );
+ lastName = id.substring( endIndex + 1, id.length() );
+ }
+
+ patientWhere = operator + "( ( lower(p.firstname)='" + firstName + "' and lower(p.middlename)='" + middleName + "' and lower(p.lastname)='" + lastName + "' ) or lower(pi.identifier)='" + id + "') ";
+ patientOperator = " and ";
+ hasIdentifier = true;
+ }
+ else if ( keys[0].equals( Patient.PREFIX_PATIENT_ATTRIBUTE ) )
+ {
+ sql += "(select value from patientattributevalue where patientid=p.patientid and patientattributeid="
+ + id + " ) as " + Patient.PREFIX_PATIENT_ATTRIBUTE + "_" + id + ",";
+ otherWhere = operator + "lower(" + Patient.PREFIX_PATIENT_ATTRIBUTE + "_" + id + ")='" + value + "'";
+ operator = " and ";
+ }
+ else if ( keys[0].equals( Patient.PREFIX_PROGRAM ) )
+ {
+ sql += "(select programid from patient_programs where patientid=p.patientid and programid=" + keys[1]
+ + " ) as " + Patient.PREFIX_PROGRAM + "_" + id + ",";
+ otherWhere = operator + Patient.PREFIX_PROGRAM + "_" + id + "=" + id;
+ operator = " and ";
+ }
+ }
+
+ sql = sql.substring( 0, sql.length() - 1 ) + " "; // Removing last comma
+
+ sql += " from patient p ";
+ if ( hasIdentifier )
+ {
+ sql += " left join patientidentifier pi on p.patientid=pi.patientid ";
+ }
+
+ if( orgunit != null )
+ {
+ patientWhere += " and p.organisationunitid = " + orgunit.getId();
+ }
+
+ sql += patientWhere + " order by p.patientid desc ";
+ sql += " ) as searchresult";
+ sql += otherWhere;
+
+ if ( min != null && max != null )
+ {
+ sql += statementBuilder.limitRecord( min, max );
+ }
+
+ return sql;
+ }
+
}
=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/DefaultPatientAttributeValueService.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/DefaultPatientAttributeValueService.java 2012-05-24 13:53:25 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/DefaultPatientAttributeValueService.java 2012-07-06 09:59:36 +0000
@@ -29,14 +29,12 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
-import java.util.Map.Entry;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.patient.Patient;
import org.hisp.dhis.patient.PatientAttribute;
import org.hisp.dhis.patient.PatientAttributeOption;
@@ -216,33 +214,7 @@
{
return patientAttributeValueStore.getPatient( attribute, value );
}
-
- public int countSearchPatientAttributeValue( PatientAttribute patientAttribute, String searchText )
- {
- return patientAttributeValueStore.countSearchPatientAttributeValue( patientAttribute, searchText );
- }
-
- public Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText, int min, int max )
- {
- return patientAttributeValueStore.searchPatients( patientAttribute, searchText, min, max );
- }
-
- public Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText )
- {
- return patientAttributeValueStore.searchPatients( patientAttribute, searchText );
- }
-
- public Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, int min,
- int max )
- {
- return patientAttributeValueStore.searchPatients( patientAttributeIds, searchTexts, min, max );
- }
-
- public int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts )
- {
- return patientAttributeValueStore.countSearchPatients( patientAttributeIds, searchTexts );
- }
-
+
public void updatePatientAttributeValues( PatientAttributeOption patientAttributeOption )
{
patientAttributeValueStore.updatePatientAttributeValues( patientAttributeOption );
@@ -257,18 +229,4 @@
{
return patientAttributeValueStore.getWithoutProgram( patient );
}
-
- @Override
- public int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts,
- OrganisationUnit orgunit )
- {
- return patientAttributeValueStore.countSearchPatients( patientAttributeIds, searchTexts, orgunit );
- }
-
- @Override
- public Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts,
- OrganisationUnit orgunit, int min, int max )
- {
- return patientAttributeValueStore.searchPatients( patientAttributeIds, searchTexts, orgunit, min, max );
- }
}
=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/hibernate/HibernatePatientAttributeValueStore.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/hibernate/HibernatePatientAttributeValueStore.java 2012-07-06 04:04:41 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patientattributevalue/hibernate/HibernatePatientAttributeValueStore.java 2012-07-06 09:59:36 +0000
@@ -27,13 +27,11 @@
package org.hisp.dhis.patientattributevalue.hibernate;
import java.util.Collection;
-import java.util.List;
import org.hibernate.Query;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hisp.dhis.hibernate.HibernateGenericStore;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.patient.Patient;
import org.hisp.dhis.patient.PatientAttribute;
import org.hisp.dhis.patient.PatientAttributeOption;
@@ -131,83 +129,6 @@
.setProjection( Projections.property( "patient" ) ).list();
}
- public int countSearchPatientAttributeValue( PatientAttribute patientAttribute, String searchText )
- {
- Number rs = (Number) getCriteria( Restrictions.eq( "patientAttribute", patientAttribute ),
- Restrictions.ilike( "value", "%" + searchText + "%" ) ).setProjection( Projections.rowCount() )
- .uniqueResult();
-
- return rs != null ? rs.intValue() : 0;
- }
-
- @SuppressWarnings( "unchecked" )
- public Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText, int min, int max )
- {
- return getCriteria( Restrictions.eq( "patientAttribute", patientAttribute ),
- Restrictions.ilike( "value", "%" + searchText + "%" ) ).setProjection(
- Projections.distinct( Projections.property( "patient" ) ) ).setFirstResult( min ).setMaxResults( max )
- .list();
-
- }
-
- @SuppressWarnings( "unchecked" )
- public Collection<Patient> searchPatients( PatientAttribute patientAttribute, String searchText )
- {
- String hql = "select pav.patient from PatientAttributeValue pav where pav.patientAttribute = :patientAttribute and pav.value like '%"
- + searchText + "%'";
-
- Query query = getQuery( hql );
- query.setEntity( "patientAttribute", patientAttribute );
-
- return query.list();
- }
-
- @SuppressWarnings( "unchecked" )
- public Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts, int min,
- int max )
- {
- String hql = "SELECT DISTINCT p FROM Patient as p WHERE p in ";
- String end = "";
-
- int index = 0;
- for ( Integer patientAttributeId : patientAttributeIds )
- {
- end += ")";
-
- hql += createHQL( patientAttributeId, searchTexts.get( index ), index, patientAttributeIds.size() );
-
- index++;
- }
-
- hql += " ORDER BY p.id ASC";
-
- Query query = getQuery( hql + end ).setFirstResult( min ).setMaxResults( max );
-
- return query.list();
- }
-
- public int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts )
- {
- String hql = "SELECT COUNT( DISTINCT p ) FROM Patient as p WHERE p in ";
- String end = "";
-
- int index = 0;
- for ( Integer patientAttributeId : patientAttributeIds )
- {
- end += ")";
-
- hql += createHQL( patientAttributeId, searchTexts.get( index ), index, patientAttributeIds.size() );
-
- index++;
- }
-
- Query query = getQuery( hql + end );
-
- Number rs = (Number) query.uniqueResult();
-
- return (rs != null) ? rs.intValue() : 0;
- }
-
public void updatePatientAttributeValues( PatientAttributeOption patientAttributeOption )
{
String sql = "UPDATE patientattributevalue SET value='" + patientAttributeOption.getName()
@@ -236,173 +157,4 @@
return query.list();
}
-
- // -------------------------------------------------------------------------
- // Supportive methods
- // -------------------------------------------------------------------------
-
- private String createHQL( Integer patientAttributeId, String searchText, int index, int noCondition )
- {
- String hql = "";
- searchText = searchText.trim();
- boolean isSearchByAttribute = true;
-
- // ---------------------------------------------------------------------
- // search patients by name or identifier
- // ---------------------------------------------------------------------
- if ( patientAttributeId == null )
- {
- int startIndex = searchText.indexOf( ' ' );
- int endIndex = searchText.lastIndexOf( ' ' );
-
- String firstName = searchText.toString();
- String middleName = "";
- String lastName = "";
-
- // ---------------------------------------------------------------------
- // search patients by full-name or identifier
- // ---------------------------------------------------------------------
-
- if ( searchText.indexOf( ' ' ) != -1 )
- {
- firstName = searchText.substring( 0, startIndex );
- if ( startIndex == endIndex )
- {
- middleName = "";
- lastName = searchText.substring( startIndex + 1, searchText.length() );
- }
- else
- {
- middleName = searchText.substring( startIndex + 1, endIndex );
- lastName = searchText.substring( endIndex + 1, searchText.length() );
- }
- }
-
- hql += " ( SELECT p" + index + " FROM Patient as p" + index + " JOIN p" + index
- + ".identifiers as identifier" + index + " " + "WHERE lower(identifier" + index
- + ".identifier)=lower('" + searchText + "') " + "OR (lower(p" + index + ".firstName) LIKE lower('%"
- + firstName + "%') " + "AND lower(p" + index + ".middleName) = lower('" + middleName + "') "
- + "AND lower(p" + index + ".lastName) LIKE lower('%" + lastName + "%')) ";
-
- isSearchByAttribute = false;
- }
-
- // ---------------------------------------------------------------------
- // search patients by birth-date
- // ---------------------------------------------------------------------
-
- else if ( patientAttributeId == -1 )
- {
- hql += " ( SELECT p" + index + " FROM Patient AS p" + index
- + " WHERE p" + index + ".birthDate " + searchText;
- isSearchByAttribute = false;
- }
- // gender
- else if ( patientAttributeId == -2 )
- {
- hql += " ( SELECT p" + index + " FROM Patient AS p" + index
- + " WHERE p" + index + ".gender='" + searchText + "'";
- isSearchByAttribute = false;
- }
- // age
- else if ( patientAttributeId == -3 )
- {
- hql += " ( SELECT p" + index + " FROM Patient AS p" + index
- + " WHERE p" + index + ".integerValueOfAge='" + searchText + "'";
- isSearchByAttribute = false;
- }
- // phone number
- else if ( patientAttributeId == -4 )
- {
- hql += " ( SELECT p" + index + " FROM Patient AS p" + index
- + " WHERE p" + index + ".phoneNumber='" + searchText + "'";
- isSearchByAttribute = false;
- }
-
-
- // ---------------------------------------------------------------------
- // search patients by program
- // ---------------------------------------------------------------------
- else if ( patientAttributeId == 0 )
- {
- hql += " ( SELECT p" + index + " FROM Patient AS p" + index + " " + " JOIN p" + index
- + ".programs AS program" + index + " WHERE program" + index + ".id=" + searchText;
-
- isSearchByAttribute = false;
- }
- // -----------------------------------------------------------------
- // search patients by attribute
- // -----------------------------------------------------------------
- else
- {
- hql += " ( SELECT pav" + index + ".patient FROM PatientAttributeValue as pav" + index + " " + "WHERE pav"
- + index + ".patientAttribute.id=" + patientAttributeId + " AND lower(pav" + index
- + ".value) LIKE lower('%" + searchText + "%') ";
- }
-
- if ( index < noCondition - 1 )
- {
-
- if ( isSearchByAttribute )
- {
- hql += " AND pav" + index + ".patient in ";
- }
- else
- {
- hql += " AND p" + index + " in ";
- }
- }
-
- return hql;
-
- }
-
- @Override
- public int countSearchPatients( List<Integer> patientAttributeIds, List<String> searchTexts,
- OrganisationUnit orgunit )
- {
- String hql = "SELECT COUNT( DISTINCT p ) FROM Patient as p WHERE p in ";
- String end = "";
-
- int index = 0;
- for ( Integer patientAttributeId : patientAttributeIds )
- {
- end += ")";
-
- hql += createHQL( patientAttributeId, searchTexts.get( index ), index, patientAttributeIds.size() );
-
- index++;
- }
-
- Query query = getQuery( hql + end + " AND p.organisationUnit.id=" + orgunit.getId() );
-
- Number rs = (Number) query.uniqueResult();
-
- return (rs != null) ? rs.intValue() : 0;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Collection<Patient> searchPatients( List<Integer> patientAttributeIds, List<String> searchTexts,
- OrganisationUnit orgunit, int min, int max )
- {
- String hql = "SELECT DISTINCT p FROM Patient as p WHERE p in ";
- String end = "";
-
- int index = 0;
- for ( Integer patientAttributeId : patientAttributeIds )
- {
- end += ")";
-
- hql += createHQL( patientAttributeId, searchTexts.get( index ), index, patientAttributeIds.size() );
-
- index++;
- }
-
- hql += " ORDER BY p.id ASC";
-
- Query query = getQuery( hql + end + " AND p.organisationUnit.id=" + orgunit.getId() ).setFirstResult( min ).setMaxResults( max );
-
- return query.list();
- }
}
=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchPatientAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchPatientAction.java 2012-06-12 07:46:25 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchPatientAction.java 1970-01-01 00:00:00 +0000
@@ -1,220 +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.caseentry.action.caseentry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
-import org.hisp.dhis.paging.ActionPagingSupport;
-import org.hisp.dhis.patient.Patient;
-import org.hisp.dhis.patient.PatientAttribute;
-import org.hisp.dhis.patient.PatientAttributeService;
-import org.hisp.dhis.patient.PatientService;
-import org.hisp.dhis.patientattributevalue.PatientAttributeValueService;
-
-/**
- * @author Abyot Asalefew Gizaw
- * @version $Id$
- */
-public class SearchPatientAction
- extends ActionPagingSupport<Patient>
-{
- // -------------------------------------------------------------------------
- // Dependencies
- // -------------------------------------------------------------------------
-
- private OrganisationUnitSelectionManager selectionManager;
-
- private PatientService patientService;
-
- private PatientAttributeService patientAttributeService;
-
- private PatientAttributeValueService patientAttributeValueService;
-
- // -------------------------------------------------------------------------
- // Input/output
- // -------------------------------------------------------------------------
-
- private String searchText;
-
- private boolean listAll;
-
- private Integer searchingAttributeId;
-
- private Collection<Patient> patients = new ArrayList<Patient>();
-
- private Map<Integer, String> mapPatientOrgunit = new HashMap<Integer, String>();
-
- // -------------------------------------------------------------------------
- // Getters && Setters
- // -------------------------------------------------------------------------
-
- public void setSelectionManager( OrganisationUnitSelectionManager selectionManager )
- {
- this.selectionManager = selectionManager;
- }
-
- public void setPatientService( PatientService patientService )
- {
- this.patientService = patientService;
- }
-
- public void setPatientAttributeService( PatientAttributeService patientAttributeService )
- {
- this.patientAttributeService = patientAttributeService;
- }
-
- public void setPatientAttributeValueService( PatientAttributeValueService patientAttributeValueService )
- {
- this.patientAttributeValueService = patientAttributeValueService;
- }
-
- public Map<Integer, String> getMapPatientOrgunit()
- {
- return mapPatientOrgunit;
- }
-
- public void setSearchText( String searchText )
- {
- this.searchText = searchText;
- }
-
- public String getSearchText()
- {
- return searchText;
- }
-
- public void setListAll( boolean listAll )
- {
- this.listAll = listAll;
- }
-
- public Collection<Patient> getPatients()
- {
- return patients;
- }
-
- public void setSearchingAttributeId( Integer searchingAttributeId )
- {
- this.searchingAttributeId = searchingAttributeId;
- }
-
- private Integer total;
-
- public Integer getTotal()
- {
- return total;
- }
-
- // -------------------------------------------------------------------------
- // Implementation Action
- // -------------------------------------------------------------------------
-
- public String execute()
- throws Exception
- {
- OrganisationUnit organisationUnit = selectionManager.getSelectedOrganisationUnit();
-
- // List all patients
- if ( listAll )
- {
- searchText = "list_all_patients";
-
- total = patientService.countGetPatientsByOrgUnit( organisationUnit );
- this.paging = createPaging( total );
-
- patients = new ArrayList<Patient>( patientService.getPatients( organisationUnit, paging.getStartPos(),
- paging.getPageSize() ) );
-
- return SUCCESS;
- }
-
- if ( searchText != null )
- {
- int index = searchText.indexOf( ' ' );
-
- if ( index != -1 && index == searchText.lastIndexOf( ' ' ) )
- {
- String[] keys = searchText.split( " " );
- searchText = keys[0] + " " + keys[1];
- }
- }
-
- // Search patients by attribute
- if ( searchingAttributeId != null && searchText != null )
- {
- PatientAttribute searchingPatientAttribute = patientAttributeService
- .getPatientAttribute( searchingAttributeId );
-
- total = patientAttributeValueService.countSearchPatientAttributeValue( searchingPatientAttribute,
- searchText );
- this.paging = createPaging( total );
-
- patients = patientAttributeValueService.searchPatients( searchingPatientAttribute, searchText, paging
- .getStartPos(), paging.getPageSize() );
- }
-
- // Search patients by full-name / identifier
- else
- {
- total = patientService.countGetPatients( searchText );
- this.paging = createPaging( total );
-
- patients = patientService.getPatients( searchText, paging.getStartPos(), paging.getPageSize() );
- }
-
- for ( Patient patient : patients )
- {
- mapPatientOrgunit.put( patient.getId(), getHierarchyOrgunit( patient.getOrganisationUnit() ) );
- }
-
- return SUCCESS;
- }
-
- // -------------------------------------------------------------------------
- // Supportive method
- // -------------------------------------------------------------------------
-
- private String getHierarchyOrgunit( OrganisationUnit orgunit )
- {
- String hierarchyOrgunit = orgunit.getName();
-
- while ( orgunit.getParent() != null )
- {
- hierarchyOrgunit = orgunit.getParent().getName() + " / " + hierarchyOrgunit;
-
- orgunit = orgunit.getParent();
- }
-
- return hierarchyOrgunit;
- }
-}
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/SearchPatientAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/SearchPatientAction.java 2012-06-25 02:11:55 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/SearchPatientAction.java 2012-07-06 09:59:36 +0000
@@ -30,18 +30,15 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
import org.hisp.dhis.paging.ActionPagingSupport;
import org.hisp.dhis.patient.Patient;
-import org.hisp.dhis.patient.PatientAttribute;
-import org.hisp.dhis.patient.PatientAttributeService;
import org.hisp.dhis.patient.PatientService;
-import org.hisp.dhis.caseentry.state.SelectedStateManager;
-import org.hisp.dhis.patientattributevalue.PatientAttributeValue;
-import org.hisp.dhis.patientattributevalue.PatientAttributeValueService;
/**
* @author Abyot Asalefew Gizaw
@@ -54,52 +51,34 @@
// Dependencies
// -------------------------------------------------------------------------
- private SelectedStateManager selectedStateManager;
+ private OrganisationUnitSelectionManager selectionManager;
private PatientService patientService;
- private PatientAttributeValueService patientAttributeValueService;
-
- private PatientAttributeService patientAttributeService;
-
- // -------------------------------------------------------------------------
- // Input
- // -------------------------------------------------------------------------
-
- private List<String> searchText = new ArrayList<String>();
-
- private Boolean listAll;
-
- private List<Integer> searchObjectId = new ArrayList<Integer>();
+ // -------------------------------------------------------------------------
+ // Input/output
+ // -------------------------------------------------------------------------
+
+ private List<String> searchTexts = new ArrayList<String>();
private Boolean searchBySelectedOrgunit;
- // -------------------------------------------------------------------------
- // Output
- // -------------------------------------------------------------------------
-
- private Integer total;
+ private boolean listAll;
private Collection<Patient> patients = new ArrayList<Patient>();
- private Map<String, String> mapPatientPatientAttr = new HashMap<String, String>();
-
- private Map<Integer, String> mapPatientOrgunit = new HashMap<Integer, String>();
-
- private List<PatientAttribute> patientAttributes = new ArrayList<PatientAttribute>();
-
- // -------------------------------------------------------------------------
- // Getters/Setters
- // -------------------------------------------------------------------------
-
- public void setSelectedStateManager( SelectedStateManager selectedStateManager )
+ // -------------------------------------------------------------------------
+ // Getters && Setters
+ // -------------------------------------------------------------------------
+
+ public void setSelectionManager( OrganisationUnitSelectionManager selectionManager )
{
- this.selectedStateManager = selectedStateManager;
+ this.selectionManager = selectionManager;
}
- public void setPatientAttributeService( PatientAttributeService patientAttributeService )
+ public void setSearchBySelectedOrgunit( Boolean searchBySelectedOrgunit )
{
- this.patientAttributeService = patientAttributeService;
+ this.searchBySelectedOrgunit = searchBySelectedOrgunit;
}
public void setPatientService( PatientService patientService )
@@ -107,59 +86,33 @@
this.patientService = patientService;
}
- public List<PatientAttribute> getPatientAttributes()
- {
- return patientAttributes;
- }
-
- public Map<Integer, String> getMapPatientOrgunit()
- {
- return mapPatientOrgunit;
- }
-
- public void setPatientAttributeValueService( PatientAttributeValueService patientAttributeValueService )
- {
- this.patientAttributeValueService = patientAttributeValueService;
- }
-
- public void setSearchBySelectedOrgunit( Boolean searchBySelectedOrgunit )
- {
- this.searchBySelectedOrgunit = searchBySelectedOrgunit;
- }
-
- public void setSearchText( List<String> searchText )
- {
- this.searchText = searchText;
- }
-
- public void setListAll( Boolean listAll )
+ public void setSearchTexts( List<String> searchTexts )
+ {
+ this.searchTexts = searchTexts;
+ }
+
+ public void setListAll( boolean listAll )
{
this.listAll = listAll;
}
- public Boolean getListAll()
- {
- return listAll;
- }
-
- public void setSearchObjectId( List<Integer> searchObjectId )
- {
- this.searchObjectId = searchObjectId;
- }
-
public Collection<Patient> getPatients()
{
return patients;
}
+ private Integer total;
+
public Integer getTotal()
{
return total;
}
- public Map<String, String> getMapPatientPatientAttr()
+ private Map<Integer, String> mapPatientOrgunit = new HashMap<Integer, String>();
+
+ public Map<Integer, String> getMapPatientOrgunit()
{
- return mapPatientPatientAttr;
+ return mapPatientOrgunit;
}
// -------------------------------------------------------------------------
@@ -169,85 +122,41 @@
public String execute()
throws Exception
{
- OrganisationUnit selectOrgunit = selectedStateManager.getSelectedOrganisationUnit();
-
- // ---------------------------------------------------------------------
- // Get all of patients into the selected organisation unit
- // ---------------------------------------------------------------------
-
- if ( listAll != null && listAll )
+ OrganisationUnit organisationUnit = selectionManager.getSelectedOrganisationUnit();
+
+ // List all patients
+ if ( listAll )
{
- listAllPatient( selectOrgunit );
-
- return SUCCESS;
+ total = patientService.countGetPatientsByOrgUnit( organisationUnit );
+ this.paging = createPaging( total );
+
+ patients = new ArrayList<Patient>( patientService.getPatients( organisationUnit, paging.getStartPos(),
+ paging.getPageSize() ) );
+
}
-
- // ---------------------------------------------------------------------
- // Search patients by attributes
- // ---------------------------------------------------------------------
-
- for ( Integer attributeId : searchObjectId )
+ // search patients
+ else if ( searchTexts.size() > 0 )
{
- if ( attributeId != null && attributeId > 0 )
+ organisationUnit = (searchBySelectedOrgunit) ? organisationUnit : null;
+
+ total = patientService.countSearchPatients( searchTexts, organisationUnit );
+ this.paging = createPaging( total );
+ patients = patientService.searchPatients( searchTexts, organisationUnit, paging.getStartPos(),
+ paging.getPageSize() );
+
+ for ( Patient patient : patients )
{
- patientAttributes.add( patientAttributeService.getPatientAttribute( attributeId ) );
+ mapPatientOrgunit.put( patient.getId(), getHierarchyOrgunit( patient.getOrganisationUnit() ) );
}
}
- searchBySelectedOrgunit = (searchBySelectedOrgunit == null) ? false : searchBySelectedOrgunit;
- searchPatientByAttributes( searchObjectId, searchText, selectOrgunit, searchBySelectedOrgunit );
return SUCCESS;
}
// -------------------------------------------------------------------------
- // Supporting methods
+ // Supportive method
// -------------------------------------------------------------------------
- private void listAllPatient( OrganisationUnit organisationUnit )
- {
- total = patientService.countGetPatientsByOrgUnit( organisationUnit );
- this.paging = createPaging( total );
-
- patients = new ArrayList<Patient>( patientService.getPatients( organisationUnit, paging.getStartPos(), paging
- .getPageSize() ) );
- }
-
- private void searchPatientByAttributes( List<Integer> searchingAttributeId, List<String> searchText,
- OrganisationUnit orgunit, Boolean searchBySelectedOrgunit )
- {
- if ( searchBySelectedOrgunit )
- {
- total = patientAttributeValueService.countSearchPatients( searchingAttributeId, searchText, orgunit );
- this.paging = createPaging( total );
- patients = patientAttributeValueService.searchPatients( searchingAttributeId, searchText, orgunit, paging
- .getStartPos(), paging.getPageSize() );
- }
- else
- {
- total = patientAttributeValueService.countSearchPatients( searchingAttributeId, searchText );
- this.paging = createPaging( total );
- patients = patientAttributeValueService.searchPatients( searchingAttributeId, searchText, paging
- .getStartPos(), paging.getPageSize() );
- }
-
- Collection<PatientAttributeValue> attributeValues = patientAttributeValueService
- .getPatientAttributeValues( patients );
-
- for ( Patient patient : patients )
- {
- if ( !searchBySelectedOrgunit )
- {
- mapPatientOrgunit.put( patient.getId(), getHierarchyOrgunit( patient.getOrganisationUnit() ) );
- }
-
- for ( PatientAttributeValue attributeValue : attributeValues )
- {
- mapPatientPatientAttr.put( patient.getId() + "-" + attributeValue.getPatientAttribute().getId(),
- attributeValue.getValue() );
- }
- }
- }
-
private String getHierarchyOrgunit( OrganisationUnit orgunit )
{
String hierarchyOrgunit = orgunit.getName();
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2012-07-05 09:07:21 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2012-07-06 09:59:36 +0000
@@ -25,18 +25,14 @@
ref="org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager" />
</bean>
- <bean id="org.hisp.dhis.caseentry.action.caseentry.SearchPatientAction"
- class="org.hisp.dhis.caseentry.action.caseentry.SearchPatientAction"
+ <bean id="org.hisp.dhis.caseentry.action.patient.SearchPatientAction"
+ class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction"
scope="prototype">
<property name="selectionManager"
ref="org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager" />
<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
- <property name="patientAttributeValueService"
- ref="org.hisp.dhis.patientattributevalue.PatientAttributeValueService" />
- <property name="patientAttributeService"
- ref="org.hisp.dhis.patient.PatientAttributeService" />
</bean>
-
+
<bean
id="org.hisp.dhis.caseentry.action.caseentry.DataRecordingSelectAction"
class="org.hisp.dhis.caseentry.action.caseentry.DataRecordingSelectAction"
@@ -463,18 +459,6 @@
<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
</bean>
- <bean id="org.hisp.dhis.caseentry.action.patient.SearchPatientAction"
- class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction"
- scope="prototype">
- <property name="selectedStateManager"
- ref="org.hisp.dhis.caseentry.state.SelectedStateManager" />
- <property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
- <property name="patientAttributeValueService"
- ref="org.hisp.dhis.patientattributevalue.PatientAttributeValueService" />
- <property name="patientAttributeService"
- ref="org.hisp.dhis.patient.PatientAttributeService" />
- </bean>
-
<bean id="org.hisp.dhis.caseentry.action.patient.GetPatientAction"
class="org.hisp.dhis.caseentry.action.patient.GetPatientAction" scope="prototype">
<property name="patientService" ref="org.hisp.dhis.patient.PatientService" />
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml 2012-07-05 09:07:21 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml 2012-07-06 09:59:36 +0000
@@ -52,7 +52,7 @@
</action>
<action name="listAllPatients"
- class="org.hisp.dhis.caseentry.action.caseentry.SearchPatientAction">
+ class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
<result name="success" type="velocity">/content.vm</result>
<param name="listAll">true</param>
<param name="page">/dhis-web-caseentry/listPatient.vm</param>
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/commons.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/commons.js 2012-07-05 20:16:19 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/commons.js 2012-07-06 09:59:36 +0000
@@ -189,36 +189,19 @@
});
if(flag){
- jQuery("#searchDiv :input").each( function( i, item )
- {
- var elementId = $(this).attr('id');
- var elementName = $(this).attr('name');
- if( elementId =='dateOperator' )
- {
- dateOperator = jQuery(this).val();
- }
- else
- {
- var value = '';
- if( jQuery(this).attr('type')=='checkbox' ){
- value = byId(this.id).checked;
- }
- else if( jQuery(this).val()!='' ){
- value = htmlEncode(jQuery(this).val());
- }
- if( dateOperator != '' )
- {
- value = dateOperator + "'" + value + "'";
- dateOperator = "";
- }
- if( elementName=='searchText')
- params += "searchText=";
- else
- params += elementId + "=";
-
- params += value + "&";
- }
+ jQuery( '#advancedSearchTB tbody tr' ).each( function( i, row ){
+ jQuery( this ).find(':input').each( function( idx, item ){
+ if( idx == 0){
+ params += "searchTexts=" + item.value;
+ }
+ else if( idx == 1){
+ params += "_" + htmlEncode( item.value.toLowerCase() );
+ }
+ })
});
+ params += '&listAll=false';
+ params += '&searchBySelectedOrgunit=' + byId('searchBySelectedOrgunit').checked;
+
contentDiv = 'listPatientDiv';
jQuery( "#loaderDiv" ).show();
advancedSearch( params );
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/searchPatientCriteria.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/searchPatientCriteria.vm 2012-07-05 09:52:36 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/searchPatientCriteria.vm 2012-07-06 09:59:36 +0000
@@ -31,14 +31,14 @@
<tr id='advSearchBox0'>
<td id='searchingAttributeIdTD'>
<select id="searchObjectId" name="searchObjectId" #if( $patientAttributes.size() == 0 ) disabled="disabled" #end onchange="searchObjectOnChange(this)">
- <option value="">$i18n.getString( "search_by_name_identifier" )</option>
- <option value="0">$i18n.getString( "search_by_program" )</option>
- <option value="-1">$i18n.getString( "date_of_birth" )</option>
- <option value="-2">$i18n.getString( "gender" )</option>
+ <option value="iden">$i18n.getString( "search_by_name_identifier" )</option>
+ <option value="prg">$i18n.getString( "search_by_program" )</option>
+ <option value="fixedAttr_birthDate">$i18n.getString( "date_of_birth" )</option>
+ <option value="fixedAttr_gender">$i18n.getString( "gender" )</option>
<!-- option value="-3">$i18n.getString( "age" )</option -->
- <option value="-4">$i18n.getString( "phone_number" )</option>
+ <option value="fixedAttr_phoneNumber">$i18n.getString( "phone_number" )</option>
#foreach( $attribute in $patientAttributes )
- <option value="$attribute.id" valueType='$attribute.valueType'>$encoder.htmlEncode( $attribute.name )</option>
+ <option value="attr_$attribute.id" valueType='$attribute.valueType'>$encoder.htmlEncode( $attribute.name )</option>
#end
</select>
<em title="$i18n.getString( "required" )" class="required">*</em></label>