public async Task <DosViewModel> FillServiceDetailsBuilder(DosViewModel model) { var jObj = (JObject)JsonConvert.DeserializeObject(model.CheckCapacitySummaryResultListJson); model.CheckCapacitySummaryResultList = jObj["CheckCapacitySummaryResult"].ToObject <CheckCapacitySummaryResult[]>(); var selectedService = model.CheckCapacitySummaryResultList.FirstOrDefault(x => x.IdField == Convert.ToInt32(model.SelectedService)); var itkMessage = await _cacheManager.Read(model.UserId.ToString()); var document = XDocument.Parse(itkMessage); var serviceDetials = document.Root.Descendants("ServiceDetails").FirstOrDefault(); serviceDetials.Element("id").SetValue(selectedService.IdField.ToString()); serviceDetials.Element("name").SetValue(selectedService.NameField.ToString()); serviceDetials.Element("odsCode").SetValue(selectedService.OdsCodeField.ToString()); serviceDetials.Element("contactDetails").SetValue(selectedService.ContactDetailsField ?? ""); serviceDetials.Element("address").SetValue(selectedService.AddressField.ToString()); serviceDetials.Element("postcode").SetValue(selectedService.PostcodeField.ToString()); _cacheManager.Set(model.UserId.ToString(), document.ToString()); _notifier.Notify(_configuration.IntegrationApiItkDispatcher, model.UserId.ToString()); model.CheckCapacitySummaryResultList = new CheckCapacitySummaryResult[] { selectedService }; model.CareAdvices = await _careAdviceBuilder.FillCareAdviceBuilder(Int32.Parse(model.Age), model.Gender, model.CareAdviceMarkers.ToList()); return(model); }
public async Task <OutcomeViewModel> DispositionBuilder(OutcomeViewModel model, DosEndpoint?endpoint) { model.DispositionTime = DateTime.Now; if (OutcomeGroup.Call999.Equals(model.OutcomeGroup)) { model.CareAdviceMarkers = model.State.Keys.Where(key => key.StartsWith("Cx")); } if (!String.IsNullOrEmpty(model.SymptomDiscriminatorCode)) { model.SymptomDiscriminator = await GetSymptomDiscriminator(model.SymptomDiscriminatorCode); } var pathways = _journeyHistoryWrangler.GetPathwayNumbers(model.Journey.Steps); if (pathways.Length > 0) { model.SymptomGroup = await GetSymptomGroup(pathways); } if (OutcomeGroup.ClinicianCallBack.Equals(model.OutcomeGroup)) { //hard code SD and SG codes to fix DOS for Yorkshire region //TODO: Fix this in DOS and remove this hack model.SymptomDiscriminatorCode = "4193"; model.SymptomGroup = "1206"; } if (OutcomeGroup.PrePopulatedDosResultsOutcomeGroups.Contains(model.OutcomeGroup) && !String.IsNullOrEmpty(model.CurrentPostcode)) { model = await PopulateGroupedDosResults(model, null, null, endpoint); } model.WorseningCareAdvice = await _careAdviceBuilder.FillWorseningCareAdvice(model.UserInfo.Demography.Age, model.UserInfo.Demography.Gender); model.CareAdvices = await _careAdviceBuilder.FillCareAdviceBuilder(model.Id, new AgeCategory(model.UserInfo.Demography.Age).Value, model.UserInfo.Demography.Gender, _keywordCollector.ConsolidateKeywords(model.CollectedKeywords).ToList()); model.SurveyLink = await _surveyLinkViewModelBuilder.SurveyLinkBuilder(model); return(model); }
public async Task <OutcomeViewModel> DispositionBuilder(OutcomeViewModel model) { //TODO -- DUMMY DATA, REMOVE var user = Users.GetRandomUser(); var years = (DateTime.Now - user.DoB).Days / 365; model.UserInfo.Age = years; model.UserInfo.Gender = user.Gender; //----------------------------- model.UserId = Guid.NewGuid(); var journey = JsonConvert.DeserializeObject <Journey>(model.JourneyJson); var itkMessage = new ItkMessageBuilder(_cacheManager).WithExample().SetSummaryItems( journey.Steps.Select(a => new ItkMessageBuilder.SummaryItem(a.QuestionNo, a.QuestionTitle, a.Answer.Title)) ) .SetGender(model.UserInfo.Gender) .SetDateOfBirth(DateTime.Now.AddYears(-model.UserInfo.Age).ToShortDateString()) .SetDispositionCode(model.Id.Replace("Dx", string.Empty)) .SetProvider("111Digital") .SetInformantType("NotSpecified") .SetSendToRepeatCaller(false) .SetForename(user.GivenName) .SetSurname(user.FamilyName) .SetDateOfBirth(user.DoB.ToString("yyyy-MM-dd")) .SetGender(user.Gender) .SetHomeAddress(new ItkMessageBuilder.Address(string.Format("{0} {1} {2}", user.AddressLine1, user.AddressLine2, user.AddressLine3), string.Format("{0} {1}", user.AddressLine4, user.AddressLine5), user.Postcode)) .Build(model.UserId.ToString()); model.CareAdvices = await _careAdviceBuilder.FillCareAdviceBuilder(model.UserInfo.Age, model.UserInfo.Gender, model.CareAdviceMarkers.ToList()); model.SymptomGroup = await _restfulHelper.GetAsync(string.Format(_configuration.BusinessApiPathwaySymptomGroupUrl, string.Join(",", journey.Steps.Select(s => s.QuestionId.Split('.').First()).Distinct()))); return(model); }
public async Task <OutcomeViewModel> DispositionBuilder(OutcomeViewModel model, DosEndpoint?endpoint) { model.DispositionTime = DateTime.Now; Task <SymptomDiscriminator> discriminatorTask = null; Task <string> symptomGroupTask = null; if (model.OutcomeGroup.IsCoronaVirusCallback) { //hard code SD and SG codes for covidpathway //TODO: Fix this in Pathways and remove this hack model.SymptomDiscriminatorCode = "8001"; model.SymptomGroup = "8000"; } else if (OutcomeGroup.ClinicianCallBack.Equals(model.OutcomeGroup)) { //hard code SD and SG codes to fix DOS for Yorkshire region //TODO: Fix this in DOS and remove this hack model.SymptomDiscriminatorCode = "4193"; model.SymptomGroup = "1206"; } else { if (!string.IsNullOrEmpty(model.SymptomDiscriminatorCode)) { discriminatorTask = GetSymptomDiscriminator(model.SymptomDiscriminatorCode); } var pathways = _journeyHistoryWrangler.GetPathwayNumbers(model.Journey.Steps); if (pathways.Any()) { symptomGroupTask = GetSymptomGroup(pathways); } if (discriminatorTask != null) { model.SymptomDiscriminator = await discriminatorTask; } if (symptomGroupTask != null) { model.SymptomGroup = await symptomGroupTask; } } var dosTask = Task.FromResult(model); if (OutcomeGroup.PrePopulatedDosResultsOutcomeGroups.Contains(model.OutcomeGroup) && !string.IsNullOrEmpty(model.CurrentPostcode)) { dosTask = PopulateGroupedDosResults(model, null, null, endpoint); } var worseningTask = Task.FromResult(model.WorseningCareAdvice); if (!model.WorseningCareAdvice.Items.Any()) { worseningTask = _careAdviceBuilder.FillWorseningCareAdvice(model.UserInfo.Demography.Age, model.UserInfo.Demography.Gender); } var careAdvicesTask = Task.FromResult(model.CareAdvices); if (!model.CareAdvices.Any()) { var ageGroup = new AgeCategory(model.UserInfo.Demography.Age).Value; var careAdviceKeywords = _keywordCollector.ConsolidateKeywords(model.CollectedKeywords).ToList(); careAdvicesTask = _careAdviceBuilder.FillCareAdviceBuilder(model.Id, ageGroup, model.UserInfo.Demography.Gender, careAdviceKeywords); } model = await dosTask; if (OutcomeGroup.Call999Cat1.Equals(model.OutcomeGroup) || OutcomeGroup.Call999Cat2.Equals(model.OutcomeGroup) || OutcomeGroup.Call999Cat3.Equals(model.OutcomeGroup)) { model.CareAdviceMarkers = model.State.Keys.Where(key => key.StartsWith("Cx")); } if (model.Is999Callback) { model.HasAcceptedCallbackOffer = true; } var surveyTask = _surveyLinkViewModelBuilder.SurveyLinkBuilder(model); model.WorseningCareAdvice = await worseningTask; model.CareAdvices = await careAdvicesTask; model.SurveyLink = await surveyTask; return(model); }