private void CheckPhoneAndAddressRequiredFields(PatientSearchResultDto patientSearchResult) { var sb = new StringBuilder(); var phoneRequiredFieldMissing = from p in patientSearchResult.PhoneNumbers where p.PatientPhoneType == null || string.IsNullOrEmpty(p.PhoneNumber) select p; if (phoneRequiredFieldMissing.Count() > 0) { sb.Append("Phone Type and Phone Number are all required"); sb.Append(Environment.NewLine); } var regex = new Regex(@"^\d{5}(-\d{4})?$"); var addressRequiredFieldMissing = from a in patientSearchResult.Addresses where (a.PatientAddressType == null || string.IsNullOrEmpty(a.PostalCode) || a.StateProvince == null || string.IsNullOrEmpty(a.CityName) || string.IsNullOrEmpty(a.FirstStreetAddress)) || (!string.IsNullOrEmpty(a.PostalCode) && !regex.IsMatch(a.PostalCode)) select a; if (addressRequiredFieldMissing.Count() > 0) { sb.Append("Address Type, First Street Address, City Name, State Province and PostalCode are all required. And also please make sure the foramt of Post Code is correct."); sb.Append(Environment.NewLine); } var errors = sb.ToString(); if (!string.IsNullOrEmpty(errors)) { throw new ArgumentException(string.Format("Please fix the following errors before trying to save:{0}{1}", Environment.NewLine, errors)); } }
private Patient SavePatient(PatientSearchResultDto patientSearchResult, long agencyKey) { CheckPhoneAndAddressRequiredFields(patientSearchResult); var agency = _agencyRepository.GetByKey(agencyKey); var personName = new PersonName( patientSearchResult.PrefixName, patientSearchResult.FirstName, patientSearchResult.MiddleName, patientSearchResult.LastName, patientSearchResult.SuffixName); var patientGender = (patientSearchResult.PatientGender == null) ? null : _mappingHelper.MapLookupField <PatientGender> (patientSearchResult.PatientGender); var patientProfile = new PatientProfileBuilder() .WithBirthDate(patientSearchResult.BirthDate) .WithPatientGender(patientGender) .Build(); var patient = _patientFactory.CreatePatient(agency, personName, patientProfile); PopulatePatientAddresses(patient, patientSearchResult); PopulatePatientPhones(patient, patientSearchResult); _patientRepository.MakePersistent(patient); return(patient); }
private PatientSearchResultDto GetPatientSearchResultDto(MailAttachment mailAttachment) { var patientSearchResultDto = new PatientSearchResultDto(); var queryCriteria = new PatientQueryCriteria(); var contentBytes = mailAttachment.ContentBytes; var fileName = mailAttachment.FileName; if (fileName.ToLower().EndsWith(".zip")) { queryCriteria = GetQueryCriteriaFromXDM(contentBytes); } else if (fileName.ToLower().EndsWith(".xml")) { queryCriteria = GetQueryCriteriaFromC32(contentBytes); } else { throw new ApplicationException("Unsupported file type :" + fileName); } if (queryCriteria.IsNullCriteria()) { return(patientSearchResultDto); } var result = _patientRepository.FindPatientsByAdvancedSearch( queryCriteria.FirstName, queryCriteria.MiddleName, queryCriteria.LastName, queryCriteria.GenderWellKnownName, queryCriteria.BirthDate, null, null, null, null, null, null, null, null, null, 0, 100); var patientSearchResultDtos = Mapper.Map <IList <Patient>, IList <PatientSearchResultDto> > (result.Item3); var firstOrDefault = patientSearchResultDtos.FirstOrDefault(); if (firstOrDefault != null) { patientSearchResultDto = firstOrDefault; } else { patientSearchResultDto = CreatePatientSearchResultDtoFromQueryCriteria(queryCriteria); } return(patientSearchResultDto); }
private void PopulatePatientPhones(Patient patient, PatientSearchResultDto patientSearchResult) { new AggregateNodeCollectionMapper <PatientPhoneDto, Patient, PatientPhone> ( new SoftDeleteObservableCollection <PatientPhoneDto> (patientSearchResult.PhoneNumbers), patient, patient.PhoneNumbers) .MapRemovedItem(RemovePatientPhone) .MapAddedItem(AddPatientPhone) .MapChangedItem(ChangePatientPhone) .Map(); }
private void ExecuteApplyPayment(PatientSearchResultDto patientQuickSearchResultDto) { _navigationService.Navigate( WorkspacesRegion, "FrontDeskDashboardView", "MakePayment", new KeyValuePair <string, string> ("PatientKey", patientQuickSearchResultDto.Key.ToString()), new KeyValuePair <string, string> ( "PatientFullName", string.Format("{0} {1}", patientQuickSearchResultDto.FirstName, patientQuickSearchResultDto.LastName))); }
private void ExecuteCreateNewAppointment(PatientSearchResultDto patientQuickSearchResultDto) { _navigationService.NavigateToActiveView( WorkspacesRegion, "CreateAppointment", new[] { new KeyValuePair <string, string> ("PatientKey", patientQuickSearchResultDto.Key.ToString()), new KeyValuePair <string, string> ("PatientFirstName", patientQuickSearchResultDto.FirstName), new KeyValuePair <string, string> ("PatientLastName", patientQuickSearchResultDto.LastName) }); }
private void ExecuteViewProfile(PatientSearchResultDto patientQuickSearchResultDto) { if (patientQuickSearchResultDto != null) { _navigationService.Navigate( WorkspacesRegion, PatientWorkspaceView, "ViewPatient", new[] { new KeyValuePair <string, string> ("PatientKey", patientQuickSearchResultDto.Key.ToString()), new KeyValuePair <string, string> ("FullName", patientQuickSearchResultDto.FullName), new KeyValuePair <string, string> ("SubViewName", PatientEditorView) }); } else { _userDialogService.ShowDialog( "No patient is selected, couldn't view profile.", "Viewing Profile Failed", UserDialogServiceOptions.Ok); } }
private PatientSearchResultDto CreatePatientSearchResultDtoFromQueryCriteria(PatientQueryCriteria queryCriteria) { var patientSearchResultDto = new PatientSearchResultDto { Addresses = new SoftDeleteObservableCollection <PatientAddressDto> (), PhoneNumbers = new SoftDeleteObservableCollection <PatientPhoneDto> (), FirstName = queryCriteria.FirstName, LastName = queryCriteria.LastName, MiddleName = queryCriteria.MiddleName, BirthDate = queryCriteria.BirthDate }; if (!string.IsNullOrEmpty(queryCriteria.GenderWellKnownName)) { var patientGender = _lookupValueRepository.GetLookupByWellKnownName <PatientGender> (queryCriteria.GenderWellKnownName); if (patientGender != null) { patientSearchResultDto.PatientGender = Mapper.Map <LookupBase, LookupValueDto> (patientGender); } } if (!string.IsNullOrEmpty(queryCriteria.Phone)) { var patientPhoneType = _lookupValueRepository.GetLookupByWellKnownName <PatientPhoneType> (WellKnownNames.PatientModule.PatientPhoneType.Other); var patietnPhoneTypeDto = Mapper.Map <LookupBase, LookupValueDto> (patientPhoneType); var patientPhoneDto = new PatientPhoneDto { PatientPhoneType = patietnPhoneTypeDto, PhoneNumber = queryCriteria.Phone }; patientSearchResultDto.PhoneNumbers.Add(patientPhoneDto); } if (!string.IsNullOrEmpty(queryCriteria.AddressLineOne) || !string.IsNullOrEmpty(queryCriteria.City) || !string.IsNullOrEmpty(queryCriteria.StateWellKnownName) || !string.IsNullOrEmpty(queryCriteria.ZipCode)) { var patientAddressType = _lookupValueRepository.GetLookupByWellKnownName <PatientAddressType> (WellKnownNames.PatientModule.PatientAddressType.Other); var patientAddressTypeDto = Mapper.Map <LookupBase, LookupValueDto> (patientAddressType); var patientAddressDto = new PatientAddressDto { FirstStreetAddress = queryCriteria.AddressLineOne, PostalCode = queryCriteria.ZipCode, CityName = queryCriteria.City, PatientAddressType = patientAddressTypeDto }; if (!string.IsNullOrEmpty(queryCriteria.StateWellKnownName)) { var state = _lookupValueRepository.GetLookupByWellKnownName <StateProvince> (queryCriteria.StateWellKnownName); if (state != null) { patientAddressDto.StateProvince = Mapper.Map <LookupBase, LookupValueDto> (state); } } patientSearchResultDto.Addresses.Add(patientAddressDto); } return(patientSearchResultDto); }