Last active
August 29, 2015 14:11
-
-
Save Kenneth-Posey/50023f7b2eb528adfc0a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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