/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) ITECH, University of Washington, Seattle WA. All Rights Reserved.
*/
package us.mn.state.health.lims.common.provider.validation;
import org.apache.commons.validator.GenericValidator;
import us.mn.state.health.lims.common.provider.query.PatientSearchResults;
import us.mn.state.health.lims.common.servlet.validation.AjaxServlet;
import us.mn.state.health.lims.common.util.ConfigurationProperties;
import us.mn.state.health.lims.common.util.StringUtil;
import us.mn.state.health.lims.sample.daoimpl.SearchResultsDAOImp;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* The QuickEntryAccessionNumberValidationProvider class is used to validate,
* via AJAX.
*/
public class SubjectNumberValidationProvider extends BaseValidationProvider{
public SubjectNumberValidationProvider(){
super();
}
public SubjectNumberValidationProvider( AjaxServlet ajaxServlet ){
this.ajaxServlet = ajaxServlet;
}
@Override
public void processRequest( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
String queryResponse = "valid";
String fieldId = request.getParameter( "fieldId" );
String number = request.getParameter( "subjectNumber" );
String numberType = request.getParameter( "numberType" );
String STNumber = numberType.equals( "STnumber" ) ? number : null;
String subjectNumber = numberType.equals( "subjectNumber" ) ? number : null;
String nationalId = numberType.equals( "nationalId" ) ? number : null;
//We just care about duplicates but blank values do not count as duplicates
if( !( GenericValidator.isBlankOrNull( STNumber ) && GenericValidator.isBlankOrNull( subjectNumber ) && GenericValidator.isBlankOrNull( nationalId ) ) ){
List<PatientSearchResults> results = new SearchResultsDAOImp().getSearchResults( null, null, STNumber, subjectNumber, nationalId, null, null, null );
boolean allowDuplicates = ConfigurationProperties.getInstance().isPropertyValueEqual( ConfigurationProperties.Property.ALLOW_DUPLICATE_SUBJECT_NUMBERS, "true" );
if( !results.isEmpty() ){
queryResponse = ( allowDuplicates ? "warning#" + StringUtil.getMessageForKey("alert.warning") : "fail#" + StringUtil.getMessageForKey("alert.error") ) + ": " + StringUtil.getMessageForKey( "error.duplicate.subjectNumber.warning");
}
}
response.setCharacterEncoding( "UTF-8" );
ajaxServlet.sendData( fieldId, queryResponse, request, response );
}
}