Skip to content

Instantly share code, notes, and snippets.

@Kenneth-Posey
Last active August 29, 2015 14:11
Show Gist options
  • Save Kenneth-Posey/50023f7b2eb528adfc0a to your computer and use it in GitHub Desktop.
Save Kenneth-Posey/50023f7b2eb528adfc0a to your computer and use it in GitHub Desktop.
public abstract class SearchParameter
{
public abstract State.ValidState ValidState { get; set; }
public abstract string ClinicIds { get; set; }
}
public class State
{
public class ValidState
{
public bool IsValid { get; private set; }
public List<string> Errors { get; private set; }
public ValidState(bool pIsValid, List<string> pErrors)
{
this.IsValid = pIsValid;
this.Errors = pErrors;
}
}
}
public enum ReferralSearchType
{
// Organized by priority
ReferralAuthId
, MemberId
, FirstLastDob
, Invalid
}
public class ReferralSearchParameters : SearchParameter
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string ReferralId { get; set; }
public string MemberCUPID { get; set; }
public DateTime DateOfBirth { get; set; }
public ReferralSearchType SearchType { get; set; }
public override string ClinicIds { get; set; }
public override DomainObject.State.ValidState ValidState { get; set; }
public ReferralSearchParameters( string pClinicIds = ""
, string pPatientFirstName = ""
, string pPatientLastName = ""
, string pMemberCardNumber = ""
, string pReferralId = ""
, string pPatientDOB = "" )
{
var tParameters = ValidateParameters( pClinicIds
, pPatientFirstName
, pPatientLastName
, pMemberCardNumber
, pReferralId
, pPatientDOB );
this.FirstName = tParameters.FirstName;
this.LastName = tParameters.LastName;
this.ClinicIds = tParameters.ClinicIds;
this.DateOfBirth = tParameters.DateOfBirth;
this.MemberCUPID = tParameters.MemberCUPID;
this.ReferralId = tParameters.ReferralId;
this.SearchType = tParameters.SearchType;
this.ValidState = tParameters.ValidState;
}
private static ReferralSearchParameters ValidateParameters( string pClinicIds = ""
, string pPatientFirstName = ""
, string pPatientLastName = ""
, string pMemberCardNumber = ""
, string pReferralId = ""
, string pPatientDOB = "")
{
bool tParametersAreValid;
var tErrorList = new List<string>();
DateTime tPatientDob;
bool tIsDobFormatValid = UtilityLibrary.Validate.Date.DateIsValid(pPatientDOB);
bool tIsDobParseValid = DateTime.TryParse(pPatientDOB, out tPatientDob);
bool tIsDobValid = tIsDobFormatValid && tIsDobParseValid;
if (!tIsDobValid)
tPatientDob = DateTime.Parse(UtilityLibrary.DefaultData.DefaultDate.Birthdate);
bool tIsFirstLastDobValid = pPatientFirstName.Trim().Length > 2
&& pPatientLastName.Trim().Length > 2
&& tIsDobValid
&& tIsDobParseValid;
// Generally speaking these values are going to be very long
bool tIsCardNumberValid = pMemberCardNumber.Trim().Length > 6;
bool tIsReferralIdValid = pReferralId.Trim().Length > 4;
bool tIsClinicIdValid = pClinicIds.Trim().Length > 6;
// For parameters to be valid, there must be a valid clinic id
tParametersAreValid = tIsClinicIdValid
&& (tIsFirstLastDobValid || tIsCardNumberValid || tIsReferralIdValid);
// Set a default to get the var to the right type
var tReferralSearchType = ReferralSearchType.Invalid;
if (tParametersAreValid)
{
if (tIsReferralIdValid)
tReferralSearchType = ReferralSearchType.ReferralAuthId;
else if (tIsCardNumberValid)
tReferralSearchType = ReferralSearchType.MemberId;
else
tReferralSearchType = ReferralSearchType.FirstLastDob;
}
else
{
if (!tIsClinicIdValid)
tErrorList.Add("No user clinic id.");
if (!tIsFirstLastDobValid)
tErrorList.Add("First/Last name and date of birth is not valid.");
if (!tIsCardNumberValid)
tErrorList.Add("Card number is not valid.");
if (!tIsReferralIdValid)
tErrorList.Add("Referral number is not valid.");
}
return new ReferralSearchParameters(
pClinicIds
, pPatientFirstName
, pPatientLastName
, pMemberCardNumber
, pReferralId
, tPatientDob
, tReferralSearchType
, new State.ValidState(tParametersAreValid, tErrorList)
);
}
private ReferralSearchParameters( string pClinicIds
, string pPatientFirstName
, string pPatientLastName
, string pMemberCardNumber
, string pReferralId
, DateTime pPatientDOB
, ReferralSearchType pSearchType
, State.ValidState pValidState )
{
this.ClinicIds = pClinicIds;
this.FirstName = pPatientFirstName;
this.LastName = pPatientLastName;
this.MemberCUPID = pMemberCardNumber;
this.ReferralId = pReferralId;
this.DateOfBirth = pPatientDOB;
this.SearchType = pSearchType;
this.ValidState = pValidState;
}
}
public static List<usps_SearchQNXTReferral_Result> RunReferralSearch(ReferralSearchParameters pParameters)
{
List<usps_SearchQNXTReferral_Result> tSearchResults;
switch (pParameters.SearchType)
{
case ReferralSearchBL.ReferralSearchType.FirstLastDob:
tSearchResults = ReferralSearchBL
.SearchQNXTReferral( pProviderCodes: pParameters.ClinicIds
, pMemberFirstName: pParameters.FirstName
, pMemberLastName: pParameters.LastName
, pMemberDOB: pParameters.DateOfBirth);
break;
case ReferralSearchBL.ReferralSearchType.MemberId:
tSearchResults = ReferralSearchBL
.SearchQNXTReferral( pProviderCodes: pParameters.ClinicIds
, pMemberCardNumber: pParameters.MemberCUPID);
break;
case ReferralSearchBL.ReferralSearchType.ReferralAuthId:
tSearchResults = ReferralSearchBL
.SearchQNXTReferral( pProviderCodes: pParameters.ClinicIds
, pReferralID: pParameters.ReferralId);
break;
case ReferralSearchBL.ReferralSearchType.Invalid:
default:
tSearchResults = new List<usps_SearchQNXTReferral_Result>();
break;
}
return tSearchResults;
}
protected void cSearchButton_Click(object sender, EventArgs e)
{
cSearchMessage.Text = "";
var tParameters = new ReferralSearchBL.ReferralSearchParameters(
pClinicIds: ((CupUser)Session["EmulatedUser"]).ProviderClinicID
, pPatientFirstName: cSearchFirstNameTextbox.Text.Trim()
, pPatientLastName: cSearchLastNameTextbox.Text.Trim()
, pMemberCardNumber: cSearchMemberIdTextbox.Text.Trim()
, pReferralId: cSearchReferralIdTextbox.Text.Trim()
, pPatientDOB: cSearchDateofBirthTextbox.Text.Trim()
);
var tSearchResults = new List<usps_SearchQNXTReferral_Result>();
if (tParameters.ValidState.IsValid)
{
tSearchResults = ReferralSearchBL.RunReferralSearch(tParameters);
}
else
{
foreach (var tError in tParameters.ValidState.Errors)
{
cSearchMessage.Text += tError + " \n<br />";
}
}
if (tSearchResults.Count <= 0)
{
cSearchMessage.Text = "Your search returned 0 results.";
}
else
{
cSearchResultGridview.Visible = true;
}
cSearchResultGridview.DataSource = tSearchResults;
cSearchResultGridview.DataBind();
cSearchResultGridview.SelectedIndex = -1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment